Skip to content

Commit

Permalink
[FEATURE] Add more filters as described in issue #2.
Browse files Browse the repository at this point in the history
  • Loading branch information
Raphael Graf committed Oct 19, 2017
1 parent 49d8210 commit ea3db8e
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 18 deletions.
4 changes: 2 additions & 2 deletions Resources/Private/Language/locallang.xlf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="messages" date="2017-10-17T18:20:03Z" product-name="translate_locallang">
<file source-language="en" datatype="plaintext" original="messages" date="2017-10-19T17:35:02Z" product-name="translate_locallang">
<header/>
<body>
<trans-unit id="title">
Expand Down Expand Up @@ -34,7 +34,7 @@
<source>Search in all extensions</source>
</trans-unit>
<trans-unit id="filter">
<source>Filter</source>
<source>Key</source>
</trans-unit>
</body>
</file>
Expand Down
14 changes: 10 additions & 4 deletions Resources/Private/Partials/Module/List.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,18 @@
<div class="form-group">
<f:form.submit value="{f:translate(key:'save')}" disabled="{disableSaveButtons}" class="btn btn-default" />
</div>
<div class="form-group">
<f:form.textfield name="filter" id="translate-filter" value="" placeholder="{f:translate(key:'filter')}" class="form-control input-sm" />
</div>
<details>
<summary>Filter</summary>
<div>
<f:form.textfield name="filter[key]" id="translate-filter-key" value="" placeholder="{f:translate(key:'filter')}" class="form-control input-sm" />
<span class="checkbox"><label><f:form.checkbox name="filter[nodefault]" id="translate-filter-nd" value="1" />Missing in default language</label></span>
<span class="checkbox"><label><f:form.checkbox name="filter[nontranslated]" id="translate-filter-nt" value="1" />Not translated</label></span>
</div>
</details>

<div id="translate-table" class="form-group">
<div class="translate-row header">
<div>key</div>
<div>Key</div>
<div>{conf.defaultLangKey} (default)</div>
<f:for each="{langKeys}" as="langKey">
<f:if condition="{langKey} != 'default'"><div>{langKey}</div></f:if>
Expand Down
12 changes: 12 additions & 0 deletions Resources/Public/Css/translate.css
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,15 @@ form.form-group select {
form.form-group select.form-control[multiple] {
min-height: 0;
}

.form-group summary:focus {
outline-style: none;
}
.form-group summary {
display: list-item;
margin-bottom: 0.5em;
cursor: pointer;
}
.form-group details > div {
margin-left:1em;
}
59 changes: 47 additions & 12 deletions Resources/Public/Js/translate.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ window.addEventListener('DOMContentLoaded', function() {
var el_act = null; //current drag elem
var el_last = null; //last element with a highlight border
var dragging = false;
var i, l;
var i, j, l;

var table = document.getElementById('translate-table');
if (!table)
Expand All @@ -11,16 +11,52 @@ window.addEventListener('DOMContentLoaded', function() {
for (i = 0, l = rows.length; i < l; i++) {
initrow(rows[i]);
}
var filter = document.getElementById('translate-filter');
if (filter) {
var inputs = table.getElementsByTagName('input');
filter.addEventListener('keyup', function (e) {
for (i = 0, l = inputs.length; i < l; i++)
if (inputs[i].value.indexOf(filter.value) === -1)
inputs[i].parentNode.parentNode.style.display = 'none';
else
inputs[i].parentNode.parentNode.style.display = '';
});
var filter_key = document.getElementById('translate-filter-key');
if (filter_key) {
var filter_nd = document.getElementById('translate-filter-nd');
var filter_nt = document.getElementById('translate-filter-nt');
var inputs = table.getElementsByTagName('input'); //XXX
filter_key.addEventListener('keyup', filterKey);
filter_nd.addEventListener('change', filterCheck);
filter_nt.addEventListener('change', filterCheck);
}

function filterKey() {
for (i = 0, l = inputs.length; i < l; i++)
if (inputs[i].value.indexOf(filter_key.value) === -1)
inputs[i].parentNode.parentNode.style.display = 'none';
else
inputs[i].parentNode.parentNode.style.display = '';
}
function filterCheck() {
filterNonTranslated();
}
function filterNonTranslated() {
for (i = 0, l = inputs.length; i < l; i++) {
var textareas = inputs[i].parentNode.parentNode.getElementsByTagName('textarea');
var display = 'none';
if (filter_nt.checked) {
for (j = 1; j < textareas.length; j++) {
if (textareas[j].value === '') {
display = '';
break;
}
}
}
if (filter_nd.checked) {
if (textareas[0].value === '')
display = ''
}
if (!filter_nt.checked && !filter_nd.checked)
display = ''
inputs[i].parentNode.parentNode.style.display = display;
}
}
function filterNoDefault() {
for (i = 0, l = inputs.length; i < l; i++) {
var textareas = inputs[i].parentNode.parentNode.getElementsByTagName('textarea');
inputs[i].parentNode.parentNode.style.display = (textareas[0].value !== '') ? 'none': '';
}
}

function initrow(row) {
Expand Down Expand Up @@ -111,7 +147,6 @@ window.addEventListener('DOMContentLoaded', function() {
var nname = 'tx_translatelocallang_tools_translatelocallangm1[keys]['+newkey+']';
inputs[0].setAttribute('name', nname);
inputs[0].value = '';

for (i = 0; i < textareas.length; i++) {
oname = textareas[i].getAttribute('name');
nname = oname.replace('][' + key + '][', '][' + newkey+ '][');
Expand Down

0 comments on commit ea3db8e

Please sign in to comment.