Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #721: Allow sorting columns in search results #727

Merged
merged 2 commits into from Apr 13, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/classes/Transvision/ShowResults.php
Expand Up @@ -259,7 +259,7 @@ public static function resultsTable($search_object, $search_results, $page)
$extra_column_header = "<th>{$locale3}</th>";
}

$table = "<table class='collapsable results_table'>
$table = "<table class='collapsable results_table sortable'>
<thead>
<tr class='column_headers'>
<th>Entity</th>
Expand Down
2 changes: 1 addition & 1 deletion app/classes/Transvision/Utils.php
Expand Up @@ -151,7 +151,7 @@ public static function highlightString($str)
* @param array $arr2 Optional. A second column of data
* @param array $titles Column titles, by default 4 columns
* @param string $cssclass optional css class to apply to the table
* @return string and html table
* @return void
*/
public static function printSimpleTable(
$arr,
Expand Down
3 changes: 0 additions & 3 deletions app/controllers/channelcomparison.php
@@ -1,8 +1,5 @@
<?php
require_once INC . 'l10n-init.php';

// Include JS lib after $javascript_include gets reset in l10n-init.php.
$javascript_include = ['/js/select_column.js'];

include MODELS . 'channelcomparison.php';
include VIEWS . 'channelcomparison.php';
1 change: 0 additions & 1 deletion app/controllers/health_status.php
Expand Up @@ -2,7 +2,6 @@
namespace Transvision;

$locales_list = [];
$javascript_include = ['/js/show_hide_tabs.js'];

foreach (Project::getRepositories() as $repo) {
$locales_list = array_merge($locales_list, Project::getRepositoryLocales($repo));
Expand Down
3 changes: 0 additions & 3 deletions app/controllers/showrepos.php
@@ -1,8 +1,5 @@
<?php
require_once INC . 'l10n-init.php';

// Include JS lib after $javascript_include gets reset in l10n-init.php.
$javascript_include = ['/js/sorttable.js'];

include MODELS . 'showrepos.php';
include VIEWS . 'showrepos.php';
1 change: 0 additions & 1 deletion app/controllers/tmx_downloads.php
Expand Up @@ -19,7 +19,6 @@
include MODELS . 'tmx_downloading.php';
include VIEWS . 'tmx_downloading.php';
} else {
$javascript_include = ['/js/select_all.js'];
$l10n = new \tinyl10n\ChooseLocale($locales_list);
$locale = $l10n->getCompatibleLocale();
include VIEWS . 'tmx_downloads.php';
Expand Down
3 changes: 0 additions & 3 deletions app/controllers/unlocalized_words.php
Expand Up @@ -4,9 +4,6 @@
// Get requested repo and locale.
require_once INC . 'l10n-init.php';

// Include JS lib after $javascript_include gets reset in l10n-init.php.
$javascript_include = ['/js/sorttable.js'];

include MODELS . 'unlocalized_words.php';

switch ($page) {
Expand Down
77 changes: 52 additions & 25 deletions app/inc/dispatcher.php
Expand Up @@ -11,83 +11,99 @@
$extra = null;
$experimental = false;
$show_title = true;
$css_files = ['transvision.css'];
$js_files = ['/js/base.js'];

switch ($url['path']) {
case '/':
$controller = 'mainsearch';
$show_title = false;
$js_files[] = '/js/component_filter.js';
$js_files[] = '/js/main_search.js';
$js_files[] = '/js/sorttable.js';
$js_files[] = '/assets/jQuery-Autocomplete/dist/jquery.autocomplete.min.js';
break;
case '3locales':
$controller = 'mainsearch';
$show_title = true;
$page_title = '3 locales search';
$page_descr = 'One source locale, get search results for two target locales';
$js_files[] = '/js/component_filter.js';
$js_files[] = '/js/main_search.js';
$js_files[] = '/js/sorttable.js';
$js_files[] = '/assets/jQuery-Autocomplete/dist/jquery.autocomplete.min.js';
break;
case 'accesskeys':
$view = 'accesskeys';
$view = 'accesskeys';
$page_title = 'Access Keys';
$page_descr = 'Check your access keys.';
$js_files[] = '/js/sorttable.js';
break;
case Strings::StartsWith($url['path'], 'api'):
$controller = 'api';
$page_title = 'API response';
$page_descr = '';
$template = false;
$template = false;
break;
case 'channelcomparison':
$controller = 'channelcomparison';
$page_title = 'Channel Comparison';
$page_descr = 'Compare strings from channel to channel.';
$js_files[] = '/js/select_column.js';
$js_files[] = '/js/sorttable.js';
break;
case 'consistency':
$experimental = true;
$controller = 'consistency';
$page_title = 'Translation Consistency';
$page_descr = 'Analyze translation consistency across repositories.';
$controller = 'consistency';
$page_title = 'Translation Consistency';
$page_descr = 'Analyze translation consistency across repositories.';
break;
case 'credits':
$view = 'credits';
$view = 'credits';
$page_title = 'Credits';
$page_descr = '';
break;
case 'downloads':
$controller = 'tmx_downloads';
$page_title = 'TMX Download';
$page_descr = 'Create and download your own <abbr title="Translation Memory eXchange">TMX</abbr> file containing the strings you need.';
$css_include = ['tmx.css'];
$controller = 'tmx_downloads';
$page_title = 'TMX Download';
$page_descr = 'Create and download your own <abbr title="Translation Memory eXchange">TMX</abbr> file containing the strings you need.';
$css_files[] = 'tmx.css';
$js_files[] = '/js/select_all.js';
break;
case 'gaia':
$view = 'gaia';
$view = 'gaia';
$page_title = 'Gaia Comparison';
$page_descr = 'Check the Status of your GAIA strings across repositories.';
break;
case 'news':
$controller = 'changelog';
$page_title = 'Transvision News and Release Notes';
$page_descr = '';
$css_include = ['changelog.css'];
$controller = 'changelog';
$page_title = 'Transvision News and Release Notes';
$page_descr = '';
$css_files[] = 'changelog.css';
break;
case 'productization':
$view = 'productization';
$page_title = 'Productization Overview';
$page_descr = 'Show productization aspects for this locale.';
$css_include = ['productization.css'];
$view = 'productization';
$page_title = 'Productization Overview';
$page_descr = 'Show productization aspects for this locale.';
$css_files[] = 'productization.css';
break;
case 'rss':
$controller = 'changelog';
$template = false;
$template = false;
break;
case 'showrepos':
$experimental = true;
$controller = 'health_status';
$page_title = 'Health status';
$page_descr = 'Check the health status of locales.';
$css_include = ['health.css'];
$controller = 'health_status';
$page_title = 'Health status';
$page_descr = 'Check the health status of locales.';
$css_files[] = 'health.css';
$js_files[] = '/js/show_hide_tabs.js';
break;
case 'stats':
$controller = 'showrepos';
$page_title = 'Status Overview';
$page_descr = 'Repository status overview.';
$js_files[] = '/js/sorttable.js';
break;
case 'string':
$controller = 'onestring';
Expand All @@ -98,12 +114,15 @@
$controller = 'unchanged_strings';
$page_title = 'Unchanged Strings';
$page_descr = 'Display a list of strings identical to English';
$js_files[] = '/js/component_filter.js';
$js_files[] = '/js/sorttable.js';
break;
case 'unlocalized':
$experimental = true;
$controller = 'unlocalized_words';
$page_title = 'Commonly Unlocalized Words';
$page_descr = 'Display the list of the most common untranslated words. Click on the table headers to sort results.';
$js_files[] = '/js/sorttable.js';
break;
case 'unlocalized-json':
$controller = 'unlocalized_words';
Expand All @@ -113,9 +132,11 @@
$controller = 'check_variables';
$page_title = 'Variables Overview';
$page_descr = 'Show potential errors related to missing or mispelled variables in your strings.';
$js_files[] = '/js/component_filter.js';
$js_files[] = '/js/sorttable.js';
break;
default:
$view = '404';
$view = '404';
$page_title = '404: Page Not Found';
$page_descr = '';
break;
Expand Down Expand Up @@ -148,12 +169,18 @@
$content = ob_get_contents();
ob_end_clean();
}

ob_start();

// Log script performance in the HTTP headers sent to the browser
Utils::addPerformancesHTTPHeader();
$perf_header = ob_get_contents();

// Log script performance in PHP integrated developement server console
Utils::logScriptPerformances();

ob_end_clean();

print $perf_header . $content;

die;
3 changes: 0 additions & 3 deletions app/inc/l10n-init.php
Expand Up @@ -65,6 +65,3 @@
// Get RTL attribute for source and target locales
$locale_dir = $l10n->getDirection($locale);
$source_locale_dir = $l10n->getDirection($source_locale);

// Initialize list of JavaScript files to include
$javascript_include = [];
1 change: 0 additions & 1 deletion app/models/check_variables.php
Expand Up @@ -31,7 +31,6 @@
// Add component filter
if (in_array($repo, $desktop_repos)) {
// Build logic to filter components
$javascript_include = ['/js/component_filter.js'];
$components = Project::getComponents(array_flip($var_errors));
$filter_block = '';
foreach ($components as $value) {
Expand Down
1 change: 0 additions & 1 deletion app/models/mainsearch_strings.php
Expand Up @@ -87,7 +87,6 @@
} else {
if (Project::isDesktopRepository($search->getRepository())) {
// Build logic to filter components
$javascript_include[] = '/js/component_filter.js';
$filter_block = '';
foreach ($components as $value) {
$filter_block .= " <a href='#{$value}' id='{$value}' class='filter'>{$value}</a>";
Expand Down
1 change: 0 additions & 1 deletion app/models/unchanged_strings.php
Expand Up @@ -44,7 +44,6 @@

if (in_array($repo, $desktop_repos)) {
// Build logic to filter components
$javascript_include = ['/js/component_filter.js'];
$components = Project::getComponents($unchanged_strings);
$filter_block = '';
foreach ($components as $value) {
Expand Down
7 changes: 4 additions & 3 deletions app/views/accesskeys.php
Expand Up @@ -3,7 +3,7 @@

require_once INC . 'l10n-init.php';

$strings[$repo] = Utils::getRepoStrings($locale, $repo);
$strings[$repo] = Utils::getRepoStrings($locale, $repo);
$strings_english[$repo] = Utils::getRepoStrings('en-US', $repo);

$channel_selector = Utils::getHtmlSelectOptions(
Expand All @@ -12,7 +12,8 @@
array_flip($desktop_repos)
),
$repo,
true);
true
);

// Get the locale list
$loc_list = Project::getRepositoryLocales($repo);
Expand Down Expand Up @@ -58,5 +59,5 @@ function ($entity) {
$ak_results,
$strings[$repo],
['Label entity', 'Label value', 'Access&nbsp;key', 'Access key entity'],
'collapsable'
'collapsable sortable'
);
8 changes: 4 additions & 4 deletions app/views/channelcomparison.php
Expand Up @@ -38,12 +38,12 @@

<?php else: ?>
<h3>Locale: <?=$locale?></h3>
<table class='collapsable' id='modified_strings_table'>
<table class='collapsable sortable' id='modified_strings_table'>
<thead>
<tr class='column_headers'>
<th>Key</th>
<th class='select_header'><?=$chan1?><span>Select column</span></th>
<th class='select_header'><?=$chan2?><span>Select column</span></th>
<th class='select_header'><a href="#">Select column</a><?=$chan1?></th>
<th class='select_header'><a href="#">Select column</a><?=$chan2?></th>
</tr>
</thead>
<tbody>
Expand All @@ -63,7 +63,7 @@

<?php else : ?>
<h3 id="new_strings">New strings added in <em><?=$locale?></em> between <?=$repos_nice_names[$chan1]?> and <?=$repos_nice_names[$chan2]?></h3>
<table class='collapsable' id='new_strings_table'>
<table class='collapsable sortable' id='new_strings_table'>
<thead>
<tr class='column_headers'>
<th>Entity</th>
Expand Down
2 changes: 1 addition & 1 deletion app/views/check_variables.php
Expand Up @@ -19,7 +19,7 @@
}

$content .= "
<table class='collapsable results_table {$search_id}'>
<table class='collapsable results_table sortable {$search_id}'>
<thead>
<tr class='column_headers'>
<th>Entity</th>
Expand Down
6 changes: 3 additions & 3 deletions app/views/gaia.php
Expand Up @@ -177,7 +177,7 @@
$section_description = count($divergences) . ' diverging translations across repositories';
$table = "
<p class='section_description'>{$section_description}</p>
<table id='{$anchor}' class='collapsable'>
<table id='{$anchor}' class='collapsable sortable'>
<thead>
<tr class='column_headers'>
<th style='width: {$width}%;'>Keys</th>";
Expand Down Expand Up @@ -222,7 +222,7 @@
$section_description = "Strings that have changed significantly in English between {$repo_one} and {$repo_two} but for which the entity name didn’t change";
$table = "
<p class='section_description'>{$section_description}</p>
<table id='englishchanges' class='collapsable'>
<table id='englishchanges' class='collapsable sortable'>
<thead>
<tr class='column_headers'>
<th>Key</th>
Expand Down Expand Up @@ -277,7 +277,7 @@
$section_description = "{$comparison_type} between {$repos_nice_names[$repo_one]} and {$repos_nice_names[$repo_two]}";
$table = "
<p class='section_description'>{$section_description}</p>
<table id='{$anchor}' class='{$cssclass}'>
<table id='{$anchor}' class='{$cssclass} sortable'>
<thead>
<tr class='column_headers'>
<th>Key</th>
Expand Down
4 changes: 0 additions & 4 deletions app/views/search_form.php
@@ -1,10 +1,6 @@
<?php
namespace Transvision;

// Include JavaScript
$javascript_include[] = '/js/main_search.js';
$javascript_include[] = '/assets/jQuery-Autocomplete/dist/jquery.autocomplete.min.js';

/*
This function will mark a <select> option as selected if a cookie is set.
*/
Expand Down