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); | ||||
| 	} | ||||
|  | ||||
|  | ||||
| 	function history ($projectid = '', $path = '', $rev = SVN_REVISION_HEAD) | ||||
| 	{ | ||||
| 		$this->load->model ('ProjectModel', 'projects'); | ||||
| @ -1175,8 +1174,15 @@ class Code extends Controller | ||||
| 				$data['message'] = 'Failed to get diff'; | ||||
| 				$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 | ||||
| 			{ | ||||
| 				$file['head_rev'] = $head_rev; | ||||
| 				$file['prev_rev'] = | ||||
| 					$this->subversion->getPrevRev ($projectid, $path, $file['created_rev']); | ||||
| 				$file['next_rev'] = | ||||
|  | ||||
| @ -146,6 +146,12 @@ class SubversionModel extends Model | ||||
| 				$fileinfo['last_author'] = ''; | ||||
| 			else | ||||
| 				$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; | ||||
| 			return $fileinfo; | ||||
| 		} | ||||
| @ -310,7 +316,6 @@ class SubversionModel extends Model | ||||
| 		return TRUE; | ||||
| 	} | ||||
|  | ||||
|  | ||||
| 	function importFiles ($projectid, $path, $committer, $commit_message, $files, $uploader) | ||||
| 	{ | ||||
| 		$this->errmsg = ''; | ||||
| @ -1090,6 +1095,16 @@ class SubversionModel extends Model | ||||
| 		} | ||||
| 		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; | ||||
| 	} | ||||
|  | ||||
|  | ||||
| @ -227,7 +227,6 @@ $this->load->view ( | ||||
|  | ||||
| 		print '<div class="metadata-menu">'; | ||||
|  | ||||
| 		 | ||||
| 		$detail_anchor_text = $this->lang->line('Details'); | ||||
| 		$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'); | ||||
|  | ||||
| @ -21,8 +21,115 @@ | ||||
| <script type="text/javascript" src="<?php print base_url_make('/js/jquery-ui.min.js')?>"></script> | ||||
| <link type="text/css" rel="stylesheet" href="<?php print base_url_make('/css/jquery-ui.css')?>" /> | ||||
|  | ||||
| <?php | ||||
| $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"> | ||||
| $(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(); | ||||
| }); | ||||
| </script> | ||||
| @ -105,45 +212,77 @@ $this->load->view ( | ||||
| 	<div style="clear: both;"></div> | ||||
| </div> | ||||
|  | ||||
| <div class="menu" id="code_diff_mainarea_menu"> | ||||
| <?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'); | ||||
| <div id='code_diff_metadata_container'> | ||||
|  | ||||
| 	$xpar = $this->converter->AsciiTohex ($headpath); | ||||
| 	print anchor ( | ||||
| 		"code/file/{$project->id}/{$xpar}{$revreq}", | ||||
| 		$this->lang->line('Details')); | ||||
| 	print ' | '; | ||||
| 	print anchor ("code/blame/{$project->id}/{$xpar}{$revreq}", $blame_anchor_text); | ||||
| 		 | ||||
| 	print ' | '; | ||||
| 	<div id='code_diff_metadata_against' class='collapsible-box'> | ||||
| 		<div id='code_diff_metadata_against_header' class='collapsible-box-header'> | ||||
| 			<?php | ||||
| 			print '<div class="metadata-committer">'; | ||||
| 			$user_icon_url = codepot_merge_path (site_url(), '/user/icon/' . $this->converter->AsciiToHex($file['against']['last_author'])); | ||||
| 			print "<img src='{$user_icon_url}' class='metadata-committer-icon' />"; | ||||
| 			print htmlspecialchars ($file['against']['last_author']); | ||||
| 			print '</div>'; | ||||
|  | ||||
| 	if (!$fullview) | ||||
| 	{ | ||||
| 		print anchor ("code/fulldiff/{$project->id}/{$xpar}{$revreq}", $fulldiff_anchor_text); | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		print anchor ("code/diff/{$project->id}/{$xpar}{$revreq}", $diff_anchor_text); | ||||
| 	} | ||||
| 			print '<div class="metadata-menu">'; | ||||
| 			print anchor ("#", $this->lang->line('Details'), 'id="code_diff_detail_against_button"'); | ||||
| 			print anchor ("#", $blame_anchor_text, 'id="code_diff_blame_against_button"'); | ||||
| 			print anchor ("#", $altdiff_anchor_text, 'id="code_diff_diff_against_button"'); | ||||
| 			print anchor ("#", $history_anchor_text, 'id="code_diff_history_against_button"'); | ||||
| 			print anchor ("#", $download_anchor_text, 'id="code_diff_download_against_button"'); | ||||
| 			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) | ||||
| 	{ | ||||
| 		if ($xpar == '') $revtrailer = $revreqroot; | ||||
| 		else $revtrailer = "/{$xpar}{$revreq}"; | ||||
| 		print anchor ("code/history/{$project->id}{$revtrailer}", $history_anchor_text); | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		print anchor ("code/history/{$project->id}/{$xpar}", $history_anchor_text); | ||||
| 	} | ||||
| ?> | ||||
| </div> <!-- code_diff_mainarea_menu --> | ||||
| 			<div style='clear: both'></div> | ||||
| 		</div> | ||||
|  | ||||
| 		<div id='code_diff_metadata_against_body'> | ||||
| 			<pre class='pre-wrapped'><?php print htmlspecialchars ($file['against']['logmsg']); ?></pre> | ||||
| 		</div> | ||||
| 	</div> | ||||
|  | ||||
| 	<div id='code_diff_metadata' class='collapsible-box'> | ||||
| 		<div id='code_diff_metadata_header' class='collapsible-box-header'> | ||||
| 			<?php | ||||
| 			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  | ||||
| 	$fileext = substr(strrchr($file['name'], '.'), 1); | ||||
| @ -151,250 +290,67 @@ $this->load->view ( | ||||
| ?> | ||||
|  | ||||
| <div class="result" id="code_diff_result"> | ||||
| <?php | ||||
|  | ||||
| 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') | ||||
| 	<?php | ||||
| 	function format_diff2 ($a, $b, $css_class) | ||||
| 	{ | ||||
| 		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]; | ||||
| 			if ($mp1 > $k) | ||||
| 			for ($i = 0; $i < $ms_count; $i++) | ||||
| 			{ | ||||
| 				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 .= htmlspecialchars(substr($a, $k, $mp1 - $k)); | ||||
| 				$cc .= htmlspecialchars(substr($a, $k)); | ||||
| 				$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 | ||||
| 		{ | ||||
| 			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'];  | ||||
| 	$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); | ||||
|  | ||||
| 	$diff_view = $fullview? 'fulldiff': 'diff'; | ||||
|  | ||||
| 	print '<div style="width: 100%; overflow: hidden;" id="code_diff_result_fullview">'; | ||||
|  | ||||
| 	// | ||||
| @ -406,21 +362,21 @@ else | ||||
|  | ||||
| 	$currev = $file['created_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 ' '; | ||||
|  | ||||
| 	// show the history details of the previous revision at the root directory | ||||
| 	$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 ' '; | ||||
| 	print anchor ($codeanc, $file['against']['created_rev']); | ||||
|  | ||||
| 	$currev = $file['created_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 anchor ($nextanc, '<i class="fa fa-arrow-circle-right"></i>'); | ||||
| 	print "</div>"; // navigator | ||||
| @ -511,20 +467,20 @@ else | ||||
|  | ||||
| 	$currev = $file['against']['created_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 ' '; | ||||
|  | ||||
| 	// show the history details of the current revision at the root directory | ||||
| 	$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 ' '; | ||||
| 	print anchor ($codeanc, $file['created_rev']); | ||||
|  | ||||
| 	$currev = $file['against']['created_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 anchor ($nextanc, '<i class="fa fa-arrow-circle-right"></i>'); | ||||
| 	print "</div>"; // navigator | ||||
| @ -558,7 +514,7 @@ else | ||||
| 		} | ||||
| 	} | ||||
| 	print '</span>'; | ||||
| 	 | ||||
|  | ||||
| 	print '<code class="line-numbered-code prettyprint lang-{$fileext}" id="new-code" class="line-numbered-code">'; | ||||
| 	$actual_line_no = 1; | ||||
| 	foreach ($file['content'] as $x) | ||||
| @ -611,8 +567,8 @@ else | ||||
|  | ||||
|  | ||||
| 	print '</div>'; | ||||
| } | ||||
| ?> | ||||
|  | ||||
| 	?> | ||||
|  | ||||
| </div> | ||||
|  | ||||
|  | ||||
| @ -65,6 +65,7 @@ | ||||
| 	$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');  | ||||
|  | ||||
| 	$show_search = (CODEPOT_SIGNIN_FOR_CODE_SEARCH === FALSE || (isset($login['id']) && $login['id'] != '')); | ||||
| ?> | ||||
|  | ||||
| <script type="text/javascript"> | ||||
| @ -78,7 +79,7 @@ function show_alert (outputMsg, titleMsg) | ||||
| 		width: 'auto', | ||||
| 		height: 'auto', | ||||
| 		buttons: { | ||||
| 			"OK": function () { | ||||
| 			"<?php print $this->lang->line('OK')?>": function () { | ||||
| 				$(this).dialog("close"); | ||||
| 			} | ||||
| 		} | ||||
| @ -613,33 +614,24 @@ $(function () { | ||||
| 	}); | ||||
| <?php endif; ?> | ||||
|  | ||||
| 	$('#code_search_submit').button().click (function () { | ||||
| 		if ($.trim($("#code_search_string").val()) != "") | ||||
| 		{ | ||||
| 			$('#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_folder_metadata').accordion({ | ||||
| 		collapsible: true | ||||
| 	}); | ||||
|  | ||||
| 	$('#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(); | ||||
| 	<?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_search_wildcard').text($('input[name=search_wildcard_pattern]').val()); | ||||
|  | ||||
| 	$('#code_search_wildcard').editable({ | ||||
| 		type: 'text',  | ||||
| 		title: '<?php print $this->lang->line('CODE_SEARCH_WILDCARD') ?>', | ||||
| 		placement: 'bottom', | ||||
| 		success: function(response, newValue) { | ||||
| 			$('input[name=search_wildcard_pattern]').val(newValue); | ||||
| 		} | ||||
| 	$("#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; | ||||
| 	}); | ||||
|  | ||||
| 	$("#code_folder_loc_by_lang_button").button().click (function () { | ||||
| @ -671,41 +663,53 @@ $(function () { | ||||
| 		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(); | ||||
| 	btn = $("#code_folder_search_button").button().click (function () { | ||||
| 		if ($("#code_folder_search").is(":visible")) | ||||
| 		{ | ||||
| 			$("#code_folder_search").hide("blind",{},200); | ||||
| 	$('#code_search_wildcard').text($('input[name=search_wildcard_pattern]').val()); | ||||
|  | ||||
| 	$('#code_search_wildcard').editable({ | ||||
| 		type: 'text',  | ||||
| 		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; | ||||
| 	}); | ||||
|  | ||||
| 	$('#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; | ||||
| 	}); | ||||
|  | ||||
| <?php endif; ?> | ||||
|  | ||||
| 	render_readme (); | ||||
| }); | ||||
| @ -846,15 +850,18 @@ $this->load->view ( | ||||
| 		print $this->lang->line('File');  | ||||
| 		print '</a>'; | ||||
|  | ||||
| 		print '<a id="code_folder_search_button" href="#">'; | ||||
| 		print $this->lang->line('Search');  | ||||
| 		print '</a>'; | ||||
| 		if ($show_search) | ||||
| 		{ | ||||
| 			print '<a id="code_folder_search_button" href="#">'; | ||||
| 			print $this->lang->line('Search');  | ||||
| 			print '</a>'; | ||||
| 		} | ||||
|  | ||||
| 		print '</div>'; | ||||
|  | ||||
| 		print '<div class="metadata-commit-date">'; | ||||
| 		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>'; | ||||
| 		?> | ||||
| 		<div style='clear: both;'></div> | ||||
| @ -889,96 +896,95 @@ $this->load->view ( | ||||
| 	<div id="code_folder_result_loc_by_file_graph"></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 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 | ||||
| 	function comp_files ($a, $b) | ||||
| 	{ | ||||
|  | ||||
| @ -501,7 +501,7 @@ function hide_unneeded_divs() | ||||
| } | ||||
|  | ||||
| $(function() { | ||||
| 	$("#code_revision_result_message").accordion ({ | ||||
| 	$("#code_revision_metadata").accordion ({ | ||||
| 		collapsible: true | ||||
| 	}); | ||||
|  | ||||
| @ -634,16 +634,11 @@ $history = $file['history']; | ||||
| 	<div style="clear: both;"></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_result_message_header" class="collapsible-box-header" > | ||||
| <div id="code_revision_metadata" class="collapsible-box"> | ||||
| 	<div id="code_revision_metadata_header" class="collapsible-box-header" > | ||||
| 		<?php | ||||
| 		print '<div class="metadata-committer">'; | ||||
| 		$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> | ||||
|  | ||||
| 	<div id="code_revision_result_message_body"> | ||||
| 		<pre id="code_revision_result_message_text" class="pre-wrapped"><?php print htmlspecialchars($history['msg']); ?></pre> | ||||
| 	<div id="code_revision_metadata_body"> | ||||
| 		<pre id="code_revision_metadata_text" class="pre-wrapped"><?php print htmlspecialchars($history['msg']); ?></pre> | ||||
| 	</div> | ||||
| </div> | ||||
|  | ||||
| <div class="result" id="code_revision_result"> | ||||
|  | ||||
| <div id="code_revision_result_files" class="collapsible-box"> | ||||
| <div class="collapsible-box-header"><?php print $this->lang->line('Files')?></div> | ||||
| <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="title"> | ||||
| <?php | ||||
| 	if ($revision <= 0) | ||||
| 	{ | ||||
| 		$revreq = ''; | ||||
| 		$revreqroot = ''; | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		$revreq = "/{$revision}"; | ||||
| 		$revreqroot = '/' . $this->converter->AsciiToHex('.') . $revreq; | ||||
| 	} | ||||
| <div class="title-band" id="code_search_title_band"> | ||||
|  | ||||
| 	// print the main anchor for the root folder.  | ||||
| 	// let the anchor text be the project name. | ||||
| 	print anchor ( | ||||
| 		"code/file/{$project->id}{$revreqroot}",  | ||||
| 		htmlspecialchars($project->name)); | ||||
| 	<div class="title"> | ||||
| 		<?php | ||||
| 		if ($revision <= 0) | ||||
| 		{ | ||||
| 			$revreq = ''; | ||||
| 			$revreqroot = ''; | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			$revreq = "/{$revision}"; | ||||
| 			$revreqroot = '/' . $this->converter->AsciiToHex('.') . $revreq; | ||||
| 		} | ||||
|  | ||||
| 	// explode non-root folder parts to anchors | ||||
| 	$exps = explode ('/', $headpath); | ||||
| 	$expsize = count($exps); | ||||
| 	$par = ''; | ||||
| 	for ($i = 1; $i < $expsize; $i++) | ||||
| 	{ | ||||
| 		print '/'; | ||||
| 		$par .= '/' . $exps[$i]; | ||||
| 		$xpar = $this->converter->AsciiToHex ($par); | ||||
| 		// print the main anchor for the root folder.  | ||||
| 		// let the anchor text be the project name. | ||||
| 		print anchor ( | ||||
| 			"code/file/{$project->id}/{$xpar}{$revreq}", | ||||
| 			htmlspecialchars($exps[$i])); | ||||
| 	} | ||||
| 			"code/file/{$project->id}{$revreqroot}",  | ||||
| 			htmlspecialchars($project->name)); | ||||
|  | ||||
| 	if ($headpath != $file['fullpath']) | ||||
| 	{ | ||||
| 		print ' - '; | ||||
| 		print htmlspecialchars ($file['fullpath']); | ||||
| 	} | ||||
| ?> | ||||
| </div> | ||||
| 		// explode non-root folder parts to anchors | ||||
| 		$exps = explode ('/', $headpath); | ||||
| 		$expsize = count($exps); | ||||
| 		$par = ''; | ||||
| 		for ($i = 1; $i < $expsize; $i++) | ||||
| 		{ | ||||
| 			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"> | ||||
| 	<?php | ||||
| 	print form_open("code/search/{$project->id}/", 'id="code_search_form"'); | ||||
| 	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 ' '; | ||||
| 		if ($headpath != $file['fullpath']) | ||||
| 		{ | ||||
| 			print ' - '; | ||||
| 			print htmlspecialchars ($file['fullpath']); | ||||
| 		} | ||||
| 		?> | ||||
| 	</div> | ||||
|  | ||||
| 	print form_checkbox(array( | ||||
| 		'name'    => 'search_invertedly',  | ||||
| 		'id'      => 'code_search_invertedly', | ||||
| 		'class'   => 'code_search_option', | ||||
| 		'value'   => 'Y', | ||||
| 		'checked' => ($invertedly == 'Y'), | ||||
| 		'title'   => $this->lang->line('CODE_SEARCH_INVERTEDLY') | ||||
| 	)); | ||||
| 	print form_label('v', 'code_search_invertedly', | ||||
| 		array('class'=>'code_search_option', 'id'=>'code_search_invertedly_label') | ||||
| 	); | ||||
| 	<div class="actions"> | ||||
| 		<?php | ||||
| 		print form_open("code/search/{$project->id}/", 'id="code_search_form"'); | ||||
| 		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_case_insensitively',  | ||||
| 		'id'      => 'code_search_case_insensitively', | ||||
| 		'class'   => 'code_search_option', | ||||
| 		'value'   => 'Y', | ||||
| 		'checked' => ($case_insensitively == 'Y'), | ||||
| 		'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_invertedly',  | ||||
| 			'id'      => 'code_search_invertedly', | ||||
| 			'class'   => 'code_search_option', | ||||
| 			'value'   => 'Y', | ||||
| 			'checked' => ($invertedly == 'Y'), | ||||
| 			'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_recursively',  | ||||
| 		'id'      => 'code_search_recursively', | ||||
| 		'class'   => 'code_search_option', | ||||
| 		'value'   => 'Y', | ||||
| 		'checked' => ($recursively == 'Y'), | ||||
| 		'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_case_insensitively',  | ||||
| 			'id'      => 'code_search_case_insensitively', | ||||
| 			'class'   => 'code_search_option', | ||||
| 			'value'   => 'Y', | ||||
| 			'checked' => ($case_insensitively == 'Y'), | ||||
| 			'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_in_name',  | ||||
| 		'id'      => 'code_search_in_name', | ||||
| 		'class'   => 'code_search_option', | ||||
| 		'value'   => 'Y', | ||||
| 		'checked' => ($in_name == 'Y'), | ||||
| 		'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_recursively',  | ||||
| 			'id'      => 'code_search_recursively', | ||||
| 			'class'   => 'code_search_option', | ||||
| 			'value'   => 'Y', | ||||
| 			'checked' => ($recursively == 'Y'), | ||||
| 			'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_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 form_checkbox(array( | ||||
| 			'name'    => 'search_in_name',  | ||||
| 			'id'      => 'code_search_in_name', | ||||
| 			'class'   => 'code_search_option', | ||||
| 			'value'   => 'Y', | ||||
| 			'checked' => ($in_name == 'Y'), | ||||
| 			'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 '<a id="code_search_wildcard" href="#"></a>'; | ||||
| 	print form_hidden('search_wildcard_pattern', set_value('search_wildcard_pattern', $wildcard_pattern)); | ||||
| 		print form_checkbox(array( | ||||
| 			'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 ' '; | ||||
| 	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 '<a id="code_search_wildcard" href="#"></a>'; | ||||
| 		print form_hidden('search_wildcard_pattern', set_value('search_wildcard_pattern', $wildcard_pattern)); | ||||
|  | ||||
| 	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 id="code_search_mainarea_result" class="result"> | ||||
|  | ||||
| @ -7,7 +7,8 @@ | ||||
| #code_blame_result, | ||||
| #code_revision_result, | ||||
| #code_history_result, | ||||
| #code_diff_result { | ||||
| #code_diff_result, | ||||
| #code_search_result { | ||||
| 	position: relative; | ||||
| 	overflow: auto; | ||||
| 	margin: 0.2em 0 0.2em 0; | ||||
| @ -35,22 +36,39 @@ | ||||
| 	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_file_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; | ||||
| } | ||||
|  | ||||
| #code_folder_metadata_header .metadata-committer-icon, | ||||
| #code_file_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;  | ||||
| 	width: auto; | ||||
| 	vertical-align: middle; | ||||
| 	margin-right: 2px; | ||||
| 	 | ||||
|  | ||||
| 	-moz-border-radius: 3px; | ||||
| 	-webkit-border-radius: 3px; | ||||
| 	border-radius: 3px; | ||||
| @ -59,7 +77,9 @@ | ||||
| #code_folder_metadata_header .metadata-committer, | ||||
| #code_file_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; | ||||
| 	color: #111111; | ||||
| } | ||||
| @ -67,7 +87,9 @@ | ||||
| #code_folder_metadata_header .metadata-menu, | ||||
| #code_file_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; | ||||
| 	margin-left: 1em; | ||||
| } | ||||
| @ -75,14 +97,18 @@ | ||||
| #code_folder_metadata_header .metadata-commit-date, | ||||
| #code_file_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; | ||||
| } | ||||
|  | ||||
| #code_folder_metadata_body, | ||||
| #code_file_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; | ||||
| 	padding: 0.2em 0.2em 0.2em 0.2em; | ||||
| 	margin: 0; | ||||
| @ -109,10 +135,6 @@ | ||||
| /*-----------------------------------------------  | ||||
|  * project source folder view  | ||||
|  *-----------------------------------------------*/ | ||||
| #code_folder_search { | ||||
| 	padding: 0.2em 0.2em 0.2em 0.2em; | ||||
| } | ||||
| 	 | ||||
| #code_folder_result_table tr { | ||||
| 	vertical-align: middle; | ||||
| } | ||||
| @ -228,11 +250,7 @@ | ||||
| /*-----------------------------------------------  | ||||
|  * project source revision view  | ||||
|  *-----------------------------------------------*/ | ||||
| #code_revision_result .collapsible-box { | ||||
| 	margin-bottom: 0.5em; | ||||
| } | ||||
|  | ||||
| #code_revision_result_message_text { | ||||
| #code_revision_metadata_text { | ||||
| 	line-height: 1.3em; | ||||
| 	padding: 0 0.2em 0 0.2em; | ||||
| } | ||||
|  | ||||
| @ -123,7 +123,7 @@ textarea { | ||||
| } | ||||
|  | ||||
| .content .collapsible-box-panel { | ||||
| 	line-height: 2em; | ||||
| 	line-height: 1.5em; | ||||
| 	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 */ | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user