Merge branch 'development' into production

This commit is contained in:
ilyaigpetrov 2019-09-07 16:37:10 +00:00
commit 4e736bf403
8 changed files with 230 additions and 44 deletions

View File

@ -29,6 +29,8 @@
{ // Private namespace starts. { // Private namespace starts.
const ifRu = chrome.i18n.getMessage('@@ui_locale').startsWith('ru');
console.log('Russian?', ifRu);
const mandatory = window.utils.mandatory; const mandatory = window.utils.mandatory;
const throwIfError = window.utils.throwIfError; const throwIfError = window.utils.throwIfError;
const chromified = window.utils.chromified; const chromified = window.utils.chromified;
@ -125,11 +127,17 @@
const pacMods = window.apis.pacKitchen.getPacMods(); const pacMods = window.apis.pacKitchen.getPacMods();
if (!pacMods.filteredCustomsString) { if (!pacMods.filteredCustomsString) {
addWarning( addWarning(
\` ifRu
Не найдено СВОИХ прокси. Этот PAC-скрипт ? \`
работает только со <a href="https://git.io/ac-own-proxy">СВОИМИ прокси</a> Не найдено СВОИХ прокси. Этот PAC-скрипт
(по умолчанию будет использоваться локальный <a href="https://git.io/ac-tor">Tor</a>). работает только со <a href="https://git.io/ac-own-proxy">СВОИМИ прокси</a>
\`, (по умолчанию будет использоваться локальный <a href="https://git.io/ac-tor">Tor</a>).
\`
: \`
Couldn't find OWN proxies. This PAC-script
works only with <a href="https://git.io/ac-own-proxy">OWN proxies</a>
(by default local <a href="https://git.io/ac-tor">Tor</a> will be used).
\`,
); );
} }
@ -142,8 +150,10 @@
if (ifWasEverModified) { if (ifWasEverModified) {
addWarning( addWarning(
'Ваш PAC-скрипт не нуждается в обновлении. Его дата: ' + (ifRu
lastModifiedStr, ? 'Ваш PAC-скрипт не нуждается в обновлении. Его дата: '
: 'Your PAC-script doesn\\'t need to be updated. It\\'s date: '
) + lastModifiedStr,
); );
const res = {lastModified: lastModifiedStr}; const res = {lastModified: lastModifiedStr};
return cb(null, res); return cb(null, res);
@ -178,7 +188,7 @@
}, },
clarifyThen( clarifyThen(
'Не удалось скачать PAC-скрипт с адресов: [ ' chrome.i18n.getMessage('FailedToDownloadPacScriptFromAddresses') + ': [ '
+ provider.pacUrls.join(' , ') + ' ].', + provider.pacUrls.join(' , ') + ' ].',
cb, cb,
), ),
@ -199,20 +209,36 @@
// provider is this or that (distinct it from others). // provider is this or that (distinct it from others).
distinctKey: 'Antizapret', distinctKey: 'Antizapret',
label: chrome.i18n.getMessage('Antizapret'), label: chrome.i18n.getMessage('Antizapret'),
desc: \`Альтернативный PAC-скрипт от стороннего разработчика. desc: ifRu
Охватывет меньше сайтов. ? \`Основной PAC-скрипт от автора проекта «Антизапрет».
Блокировка определяется по доменному имени. Охватывет меньше сайтов.
<br/> <a href="https://rebrand.ly/ac-pacs">Сравнение PAC-скриптов</a>.\`, Блокировка определяется по доменному имени и при необходимости по IP.
<br/> <a href="https://rebrand.ly/ac-pacs">Сравнение PAC-скриптов</a>.
\`
: \`The main PAC-script from the author of project "Antizapret"\.
Covers fewer sites.
Block is detected based on a domain name and, if necessary, on an IP.
<br/> <a href="https://rebrand.ly/ac-pacs">Comparison of PAC-scripts (ru)</a>.
\`,
order: 0, order: 0,
pacUrls: ['https://antizapret.prostovpn.org/proxy.pac'], pacUrls: ['https://antizapret.prostovpn.org/proxy.pac'],
}, },
Антицензорити: { Антицензорити: {
distinctKey: 'Anticensority', distinctKey: 'Anticensority',
label: chrome.i18n.getMessage('Anticensority'), label: chrome.i18n.getMessage('Anticensority'),
desc: \`Основной PAC-скрипт от автора расширения. desc: ifRu
Охватывает больше сайтов. ? \`Альтернативный PAC-скрипт от автора расширения.
Блокировка определятся по доменному имени или IP адресу. Охватывает больше сайтов.
<br/> <a href="https://rebrand.ly/ac-pacs">Сравнение PAC-скриптов</a>.\`, Блокировка определятся по доменному имени или IP адресу.
Подходит для провайдеров, блокирующих все сайты на одном IP.
<br/> <a href="https://rebrand.ly/ac-pacs">Сравнение PAC-скриптов</a>.
\`
: \`Alternative PAC-script from the author of this extension.
Covers more sites.
Block is detected based on a domain name and on an IP address.
Better fits providers that block all sites on one IP.
<br/> <a href="https://rebrand.ly/ac-pacs">Comparison of PAC-scripts (ru)</a>.
\`,
order: 1, order: 1,
/* /*
@ -225,7 +251,9 @@
onlyOwnSites: { onlyOwnSites: {
distinctKey: 'onlyOwnSites', distinctKey: 'onlyOwnSites',
label: chrome.i18n.getMessage('Only_own_sites_and_only_own_proxies'), label: chrome.i18n.getMessage('Only_own_sites_and_only_own_proxies'),
desc: 'Проксируются только добавленные вручную сайты через СВОИ вручную добавленные прокси или через локальный Tor.', desc: ifRu
? 'Проксируются только добавленные вручную адреса через СВОИ вручную добавленные прокси или через локальный Tor.'
: 'Only added manually urls are proxied via your OWN manually added proxies or via Tor.',
order: 99, order: 99,
pacUrls: [ pacUrls: [
'data:application/x-ns-proxy-autoconfig,' + escape('function FindProxyForURL(){ return "DIRECT"; }'), 'data:application/x-ns-proxy-autoconfig,' + escape('function FindProxyForURL(){ return "DIRECT"; }'),
@ -258,7 +286,7 @@
const upDate = new Date(this.lastPacUpdateStamp).toLocaleString('ru-RU') const upDate = new Date(this.lastPacUpdateStamp).toLocaleString('ru-RU')
.replace(/:\\d+$/, '').replace(/\\.\\d{4}/, ''); .replace(/:\\d+$/, '').replace(/\\.\\d{4}/, '');
chrome.browserAction.setTitle({ chrome.browserAction.setTitle({
title: \`Обновлялись \${upDate} | Версия \${window.apis.version.build}\`, title: \`\${chrome.i18n.getMessage('Updated')} \${upDate} | \${chrome.i18n.getMessage('Version')} \${window.apis.version.build}\`,
}); });
}, },
@ -353,7 +381,7 @@
if (key === null) { if (key === null) {
// No pac provider set. // No pac provider set.
return clarifyThen('Сперва выберите PAC-провайдера.', cb); return clarifyThen(chrome.i18n.getMessage('ChoosePacProviderFirstD'), cb);
} }
const pacProvider = this.getPacProvider(key); const pacProvider = this.getPacProvider(key);

View File

@ -17,6 +17,39 @@
"update": { "update": {
"message": "update" "message": "update"
}, },
"UpdatingDDD": {
"message": "Updating..."
},
"UpdatedD": {
"message": "Updated."
},
"DisablingDDD": {
"message": "Disabling..."
},
"DisabledD": {
"message": "Disabled."
},
"InstallingDDD": {
"message": "Installing..."
},
"PacScriptWasInstalledD": {
"message": "PAC-script was installed."
},
"Version": {
"message": "Version"
},
"FullVersion": {
"message": "Full version"
},
"VersionForSlowMachines": {
"message": "Version for slow machines"
},
"FailedToDownloadPacScriptFromAddresses": {
"message": "Failed to download PAC-script from addresses"
},
"ChoosePacProviderFirstD": {
"message": "Choose PAC-provider first."
},
"ProblemsQ": { "ProblemsQ": {
"message": "Problems?" "message": "Problems?"
}, },
@ -58,5 +91,50 @@
}, },
"Donate": { "Donate": {
"message": "Donate" "message": "Donate"
},
"Updated": {
"message": "Updated"
},
"ago": {
"message": "ago"
},
"never": {
"message": "never"
},
"ms": {
"message": "ms"
},
"s": {
"message": "s"
},
"min": {
"message": "min"
},
"h": {
"message": "h"
},
"d": {
"message": "d"
},
"w": {
"message": "w"
},
"m": {
"message": "m"
},
"ProxyTheDomainNameBelowQ": {
"message": "Proxy the domain name below?"
},
"auto": {
"message": "auto"
},
"yes": {
"message": "yes"
},
"no": {
"message": "no"
},
"noOwnProxiesError": {
"message": "Proxying of OWN sites is possible only via OWN proxies. No own proxies found that satisfy your requirements."
} }
} }

View File

@ -17,6 +17,39 @@
"update": { "update": {
"message": "обновить" "message": "обновить"
}, },
"UpdatingDDD": {
"message": "Обновляем..."
},
"UpdatedD": {
"message": "Обновлено."
},
"DisablingDDD": {
"message": "Отключение..."
},
"DisabledD": {
"message": "Отключено."
},
"InstallingDDD": {
"message": "Установка..."
},
"PacScriptWasInstalledD": {
"message": "PAC-скрипт установлен."
},
"Version": {
"message": "Версия"
},
"FullVersion": {
"message": "Полная версия"
},
"VersionForSlowMachines": {
"message": "Версия для слабых машин"
},
"FailedToDownloadPacScriptFromAddresses": {
"message": "Не удалось скачать PAC-скрипт с адресов"
},
"ChoosePacProviderFirstD": {
"message": "Сперва выберите PAC-провайдера."
},
"ProblemsQ": { "ProblemsQ": {
"message": "Проблемы?" "message": "Проблемы?"
}, },
@ -58,5 +91,50 @@
}, },
"Donate": { "Donate": {
"message": "Поддержать" "message": "Поддержать"
},
"Updated": {
"message": "Обновлялись"
},
"ago": {
"message": "назад"
},
"never": {
"message": "никогда"
},
"ms": {
"message": "мс"
},
"s": {
"message": "с"
},
"min": {
"message": "мин"
},
"h": {
"message": "ч"
},
"d": {
"message": "дн"
},
"w": {
"message": " недель"
},
"m": {
"message": " месяцев"
},
"ProxyTheDomainNameBelowQ": {
"message": "Проксировать указанное доменное имя?"
},
"auto": {
"message": "авто"
},
"yes": {
"message": "да"
},
"no": {
"message": "нет"
},
"noOwnProxiesError": {
"message": "Проксировать СВОИ сайты можно только при наличии СВОИХ прокси. Нет своих прокси, удовлетворяющих вашим требованиям."
} }
} }

View File

@ -137,7 +137,7 @@ export default function getExcEditor(theState) {
case 'this-no': case 'this-no':
if (ifYesClicked && !pacMods.filteredCustomsString) { if (ifYesClicked && !pacMods.filteredCustomsString) {
this.props.funs.showErrors( new TypeError( this.props.funs.showErrors( new TypeError(
'Проксировать СВОИ сайты можно только при наличии СВОИХ прокси. Нет своих прокси, удовлетворяющих вашим требованиям.' chrome.i18n.getMessage('noOwnProxiesError'),
)); ));
return false; return false;
} }
@ -293,7 +293,7 @@ export default function getExcEditor(theState) {
return ( return (
<section style="padding-bottom: 1em;"> <section style="padding-bottom: 1em;">
<div>Проксировать указанный сайт?</div> <div>{chrome.i18n.getMessage('ProxyTheDomainNameBelowQ')}</div>
<div id="exc-address-container"> <div id="exc-address-container">
<div id="exc-address" class={inputProxyingState !== undefined ? ( inputProxyingState === true ? scopedCss.ifYes : scopedCss.ifNo ) : ''}> <div id="exc-address" class={inputProxyingState !== undefined ? ( inputProxyingState === true ? scopedCss.ifYes : scopedCss.ifNo ) : ''}>
<span>*.</span><input placeholder="navalny.com" list="exc-list" id="exc-editor" <span>*.</span><input placeholder="navalny.com" list="exc-list" id="exc-editor"
@ -327,19 +327,19 @@ export default function getExcEditor(theState) {
<li><input id="this-auto" type="radio" checked name="if-proxy-this-site" onClick={this.handleRadioClick}/>{' '} <li><input id="this-auto" type="radio" checked name="if-proxy-this-site" onClick={this.handleRadioClick}/>{' '}
<label for="this-auto">{/*<span class="emoji">🔄(looks fat)</span>*/}<svg <label for="this-auto">{/*<span class="emoji">🔄(looks fat)</span>*/}<svg
class="icon" class="icon"
style="position: relative; top: 0.15em;"><use xlink:href="#iconLoopRound"></use></svg>&nbsp;авто</label> style="position: relative; top: 0.15em;"><use xlink:href="#iconLoopRound"></use></svg>&nbsp;{chrome.i18n.getMessage('auto')}</label>
</li> </li>
<li> <li>
<input id="this-yes" type="radio" name="if-proxy-this-site" checked={inputProxyingState === true} onClick={this.handleRadioClick}/> <input id="this-yes" type="radio" name="if-proxy-this-site" checked={inputProxyingState === true} onClick={this.handleRadioClick}/>
{' '}<label for="this-yes"> {' '}<label for="this-yes">
<span <span
class="emoji____buggy" class="emoji____buggy"
></span>&nbsp;да ></span>&nbsp;{chrome.i18n.getMessage('yes')}
</label> </label>
</li> </li>
<li> <li>
<input id="this-no" type="radio" name="if-proxy-this-site" checked={inputProxyingState === false} onClick={this.handleRadioClick}/> <input id="this-no" type="radio" name="if-proxy-this-site" checked={inputProxyingState === false} onClick={this.handleRadioClick}/>
{' '}<label for="this-no"><span class="emoji"></span>&nbsp;нет</label></li> {' '}<label for="this-no"><span class="emoji"></span>&nbsp;{chrome.i18n.getMessage('no')}</label></li>
</ol> </ol>
</section> </section>
); );

View File

@ -22,17 +22,17 @@ export default function getLastUpdateDate(theState) {
getDate(antiCensorRu) { getDate(antiCensorRu) {
let dateForUser = 'никогда'; let dateForUser = chrome.i18n.getMessage('never');
if( antiCensorRu.lastPacUpdateStamp ) { if( antiCensorRu.lastPacUpdateStamp ) {
let diff = Date.now() - antiCensorRu.lastPacUpdateStamp; let diff = Date.now() - antiCensorRu.lastPacUpdateStamp;
let units = 'мс'; let units = chrome.i18n.getMessage('ms');
const gauges = [ const gauges = [
[1000, 'с'], [1000, chrome.i18n.getMessage('s')],
[60, 'мин'], [60, chrome.i18n.getMessage('min')],
[60, 'ч'], [60, chrome.i18n.getMessage('h')],
[24, 'дн'], [24, chrome.i18n.getMessage('d')],
[7, ' недель'], [7, chrome.i18n.getMessage('w')],
[4, ' месяцев'], [4, chrome.i18n.getMessage('m')],
]; ];
for(const g of gauges) { for(const g of gauges) {
const diffy = Math.floor(diff / g[0]); const diffy = Math.floor(diff / g[0]);
@ -41,10 +41,10 @@ export default function getLastUpdateDate(theState) {
diff = diffy; diff = diffy;
units = g[1]; units = g[1];
} }
dateForUser = diff + units + ' назад'; dateForUser = diff + units + ' ' + chrome.i18n.getMessage('ago');
} }
return { return {
text: `${dateForUser} / ${antiCensorRu.pacUpdatePeriodInMinutes/60}ч`, text: `${dateForUser} / ${antiCensorRu.pacUpdatePeriodInMinutes/60}${chrome.i18n.getMessage('h')}`,
title: new Date(antiCensorRu.lastPacUpdateStamp).toLocaleString('ru-RU'), title: new Date(antiCensorRu.lastPacUpdateStamp).toLocaleString('ru-RU'),
}; };
@ -53,7 +53,7 @@ export default function getLastUpdateDate(theState) {
render(props) { render(props) {
const date = this.getDate(props.apis.antiCensorRu); const date = this.getDate(props.apis.antiCensorRu);
return (<div>Обновлялись: <span class="updateDate" title={date.title}>{ date.text }</span></div>); return (<div>{chrome.i18n.getMessage('Updated')}: <span class="updateDate" title={date.title}>{ date.text }</span></div>);
} }

View File

@ -62,9 +62,9 @@ export default function getPacChooser(theState) {
this.updatePac = function updatePac(onSuccess) { this.updatePac = function updatePac(onSuccess) {
props.funs.conduct( props.funs.conduct(
'Обновляем...', chrome.i18n.getMessage('UpdatingDDD'),
(cb) => theState.apis.antiCensorRu.syncWithPacProviderAsync(cb), (cb) => theState.apis.antiCensorRu.syncWithPacProviderAsync(cb),
'Обновлено.', chrome.i18n.getMessage('UpdatedD'),
onSuccess onSuccess
); );
}; };
@ -101,17 +101,17 @@ export default function getPacChooser(theState) {
} }
if (pacKey === 'none') { if (pacKey === 'none') {
this.props.funs.conduct( this.props.funs.conduct(
'Отключение...', chrome.i18n.getMessage('DisablingDDD'),
(cb) => theState.apis.antiCensorRu.clearPacAsync(cb), (cb) => theState.apis.antiCensorRu.clearPacAsync(cb),
'Отключено.', chrome.i18n.getMessage('DisabledD'),
() => this.setState({ chosenPacName: 'none' }), () => this.setState({ chosenPacName: 'none' }),
checkChosenProvider checkChosenProvider
); );
} else { } else {
this.props.funs.conduct( this.props.funs.conduct(
'Установка...', chrome.i18n.getMessage('InstallingDDD'),
(cb) => theState.apis.antiCensorRu.installPacAsync(pacKey, cb), (cb) => theState.apis.antiCensorRu.installPacAsync(pacKey, cb),
'PAC-скрипт установлен.', chrome.i18n.getMessage('PacScriptWasInstalledD'),
checkChosenProvider checkChosenProvider
); );
} }
@ -146,9 +146,9 @@ export default function getPacChooser(theState) {
{ {
props.flags.ifMini props.flags.ifMini
? (<a class={scopedCss.otherVersion + ' emoji'} href="https://rebrand.ly/ac-versions" ? (<a class={scopedCss.otherVersion + ' emoji'} href="https://rebrand.ly/ac-versions"
title="Полная версия">🏋</a>) title={chrome.i18n.getMessage("FullVersion")}>🏋</a>)
: (<a class={scopedCss.otherVersion + ' emoji'} href="https://rebrand.ly/ac-versions" : (<a class={scopedCss.otherVersion + ' emoji'} href="https://rebrand.ly/ac-versions"
title="Версия для слабых машин">🐌</a>) title={chrome.i18n.getMessage("VersionForSlowMachines")}>🐌</a>)
} }
</div> </div>
</div> </div>

View File

@ -32,9 +32,11 @@ export default function append(document, { flags }) {
a:hover { a:hover {
text-decoration: underline; text-decoration: underline;
} }
/*
label { label {
user-select: none; user-select: none;
} }
*/
div, section, header, ul, ol { div, section, header, ul, ol {
margin: 0; margin: 0;
padding: 0; padding: 0;

View File

@ -10,7 +10,7 @@ const pacUrls = [
]; ];
const commonContext = { const commonContext = {
version: '1.35', version: '1.37',
anticensorityPacUrls: [ anticensorityPacUrls: [
...pacUrls, ...pacUrls,
], ],