various fixes

pull/2/head
gorhill 9 years ago
parent 13c03d802d
commit 89a2610ab1

@ -80,21 +80,17 @@
"description": ""
},
"matrixMtxButtonTip" : {
"message": "Disable/enable matrix filtering for this scope.\nRequests blocked through matrix filtering on this page: {{count}}.",
"description": "Tool tip for matrix button: {{}} is a placeholder for number of blocked requests."
"message": "Disable/enable matrix filtering for this scope.",
"description": "Tool tip for matrix button"
},
"matrixPersistButtonTip" : {
"message": "Save all temporary changes for this scope.",
"description": "Tool tip for the persist button"
},
"matrixRevertButtonTip" : {
"message": "Remove temporary changes for this scope.",
"message": "Revert temporary changes for this scope.",
"description": "Tool tip for the revert local permission button"
},
"matrixRevertButtonAllTip" : {
"message": "Remove all temporary changes.",
"description": "Tool tip for the revert all permissions button"
},
"matrixReloadButton" : {
"message": "Reload the page.",
"description": "Tool tip for the reload button"
@ -119,16 +115,19 @@
"message": "Referrer spoofing",
"description": "A menu entry in the matrix popup"
},
"matrixRevertAllEntry" : {
"message": "Revert all temporary changes",
"description": "A menu entry in the matrix popup"
},
"matrixLoggerMenuEntry" : {
"message": "Request log",
"message": "Go to request log",
"description": "A menu entry in the matrix popup"
},
"matrixDashboardMenuEntry" : {
"message": "Dashboard",
"message": "Go to dashboard",
"description": "A menu entry in the matrix popup"
},
"statsPageTitle" : {
"message": "uMatrix – Statistics",
"description": ""
@ -602,7 +601,7 @@
},
"commandRevertAll" : {
"message": "Remove all temporary changes",
"message": "Revert all temporary changes",
"description": ""
},
"commandWhitelistPageDomain" : {

@ -1,570 +0,0 @@
{
"extName":{
"message":"µMatrix",
"description":""
},
"extShortDesc":{
"message":"Point & click to forbid\/allow any class of requests made by your browser. Use it to block scripts, iframes, ads, facebook, etc.",
"description":"this will be used as short description in web stores: MUST BE 132 characters OR LESS"
},
"dashboardPageName":{
"message":"µMatrix — Dashboard",
"description":""
},
"settingsPageName":{
"message":"Settings",
"description":"a tab in dashboard"
},
"privacyPageName":{
"message":"Privacy",
"description":"a tab in dashboard"
},
"statsPageName":{
"message":"Statistics",
"description":"a tab in dashboard"
},
"userRulesPageName":{
"message":"My rules",
"description":"a tab in dashboard"
},
"ubiquitousRulesPageName":{
"message":"Hosts files",
"description":"a tab in dashboard"
},
"aboutPageName":{
"message":"About",
"description":"a tab in dashboard"
},
"allPrettyName":{
"message":"all",
"description":"HAS TO FIT IN MATRIX HEADER!"
},
"cookiePrettyName":{
"message":"cookie",
"description":"HAS TO FIT IN MATRIX HEADER!"
},
"cssPrettyName":{
"message":"css",
"description":"HAS TO FIT IN MATRIX HEADER!"
},
"imagePrettyName":{
"message":"image",
"description":"HAS TO FIT IN MATRIX HEADER!"
},
"pluginPrettyName":{
"message":"plugin",
"description":"HAS TO FIT IN MATRIX HEADER!"
},
"scriptPrettyName":{
"message":"script",
"description":"HAS TO FIT IN MATRIX HEADER!"
},
"xhrPrettyName":{
"message":"XHR",
"description":"HAS TO FIT IN MATRIX HEADER!"
},
"framePrettyName":{
"message":"frame",
"description":"HAS TO FIT IN MATRIX HEADER!"
},
"otherPrettyName":{
"message":"other",
"description":"HAS TO FIT IN MATRIX HEADER!"
},
"matrixNoNetTrafficPrompt":{
"message":"No net traffic seen for this tab so far.",
"description":""
},
"matrixMtxButtonTip":{
"message":"Disable\/enable matrix filtering for this scope.\nRequests blocked through matrix filtering on this page: {{count}}.",
"description":"Tool tip for matrix button: {{}} is a placeholder for number of blocked requests."
},
"matrixPersistButtonTip":{
"message":"Save all temporary changes for this scope.",
"description":"Tool tip for the persist button"
},
"matrixRevertButtonTip":{
"message":"Remove temporary changes for this scope.",
"description":"Tool tip for the revert local permission button"
},
"matrixRevertButtonAllTip":{
"message":"Remove all temporary changes.",
"description":"Tool tip for the revert all permissions button"
},
"matrixReloadButton":{
"message":"Reload the page.",
"description":"Tool tip for the reload button"
},
"matrix1stPartyLabel":{
"message":"1st-party",
"description":"1st-party"
},
"matrixBlacklistedHostnames":{
"message":"{{count}} blacklisted hostname(s)",
"description":"Appears in the metadata row of bottom-most group: **mind the limited width**"
},
"matrixSwitchNoMixedContent":{
"message":"Strict HTTPS",
"description":""
},
"matrixSwitchUASpoof":{
"message":"User agent spoofing",
"description":""
},
"matrixSwitchReferrerSpoof":{
"message":"Referrer spoofing",
"description":""
},
"statsPageTitle":{
"message":"µMatrix – Statistics",
"description":""
},
"statsPageGenericStats":{
"message":"Generic statistics",
"description":""
},
"statsPageCookieHeadersFoiled":{
"message":"<a href='https:\/\/en.wikipedia.org\/wiki\/HTTP_cookie'>HTTP cookie<\/a> headers foiled: {{count}}",
"description":""
},
"statsPageRefererHeadersFoiled":{
"message":"<a href='https:\/\/en.wikipedia.org\/wiki\/HTTP_referer'>HTTP referer<\/a> headers foiled: {{count}}",
"description":""
},
"statsPageHyperlinkAuditingFoiled":{
"message":"<a href='http:\/\/www.whatwg.org\/specs\/web-apps\/current-work\/multipage\/links.html#hyperlink-auditing'>Hyperlink auditing<\/a> attempts foiled: {{count}}",
"description":""
},
"statsPageCookiesRemoved":{
"message":"Local cookies removed: {{count}}",
"description":""
},
"statsPageLocalStoragesCleared":{
"message":"<a href='http:\/\/diveintohtml5.info\/storage.html'>Local storages<\/a> emptied: {{count}}",
"description":""
},
"statsPageBrowserCacheCleared":{
"message":"Browser caches cleared: {{count}}",
"description":""
},
"statsPageDetailedStats":{
"message":"Detailed statistics",
"description":""
},
"statsPageDetailedAllPages":{
"message":"All",
"description":""
},
"statsPageDetailedBehindTheScenePage":{
"message":"Chromium: Behind the scene",
"description":""
},
"statsPageOverview":{
"message":"Overview",
"description":""
},
"statsPageRequests":{
"message":"Requests",
"description":"header for the stat type column"
},
"statsPageAllowed":{
"message":"Allowed",
"description":"header for the allowed requests column"
},
"statsPageBlocked":{
"message":"Blocked",
"description":"header for the blocked requests column"
},
"statsPageAll":{
"message":"All",
"description":""
},
"statsPagePages":{
"message":"Pages",
"description":""
},
"statsPageCookies":{
"message":"Cookies",
"description":""
},
"statsPageCSS":{
"message":"CSS",
"description":""
},
"statsPageImages":{
"message":"Images",
"description":""
},
"statsPagePlugins":{
"message":"Plugins",
"description":""
},
"statsPageScripts":{
"message":"Scripts",
"description":""
},
"statsPageXHRs":{
"message":"XHRs",
"description":""
},
"statsPageFrames":{
"message":"Frames",
"description":""
},
"statsPageOthers":{
"message":"Others",
"description":""
},
"statsPageDetailed":{
"message":"Request log",
"description":""
},
"statsPageLogSizePrompt1":{
"message":"Remember the last",
"description":"First part of Remember the last [n] HTTP requests per page"
},
"statsPageLogSizePrompt2":{
"message":"HTTP requests <b>per page<\/b>.",
"description":"Second part of Remember the last [n] HTTP requests per page"
},
"statsPageLogSizeHelp":{
"message":"<p>You can inspect details of the most recent raw HTTP requests which have been made by a web page (see below).<\/p><p>This is mostly useful to advanced users who want to investigate exactly what a web page has been doing. But logging these HTTP requests requires memory, and if you don't care about this technical information, then memory is being wasted.<\/p><p>Hence this field which lets you adjust the maximum number of the most recent HTTP requests which are to be logged for further inspection.<\/p><p>Enter &ldquo;<code>0<\/code>&rdquo; to turn off detailed logging (and consequently reduce the memory footprint of <i>µMatrix<\/i>).<\/p>",
"description":"To help user understand the purpose of the log size value"
},
"statsPageRefresh":{
"message":"Refresh",
"description":""
},
"settingsPageTitle":{
"message":"µMatrix &ndash; Settings",
"description":""
},
"settingsMatrixDisplayHeader":{
"message":"Appearance",
"description":""
},
"settingsMatrixDisplayTextSizePrompt":{
"message":"Text size:",
"description":""
},
"settingsMatrixDisplayTextSizeNormal":{
"message":"Normal",
"description":""
},
"settingsMatrixDisplayTextSizeLarge":{
"message":"Large",
"description":""
},
"settingsMatrixDisplayColorBlind":{
"message":"Color-blind friendly",
"description":""
},
"settingsMatrixConvenienceHeader":{
"message":"Convenience",
"description":"English: Convenience"
},
"settingsMatrixAutoReloadPrompt":{
"message":"When the matrix is closed, smart reload these tabs:",
"description":""
},
"settingsMatrixAutoReloadNone":{
"message":"None",
"description":""
},
"settingsMatrixAutoReloadCurrent":{
"message":"Current",
"description":""
},
"settingsMatrixAutoReloadAll":{
"message":"All",
"description":""
},
"settingsMatrixAutoReloadInfo":{
"message":"Whenever you make changes in the matrix which can affect the display and\/or behavior of one or more pages, <i>µMatrix<\/i> will reload affected pages automatically when you close the matrix.",
"description":""
},
"settingsSubframeColor":{
"message":"Blocked frames:&ensp;Color",
"description":"English: Blocked frames:&ensp;Color"
},
"settingsSubframeOpacity":{
"message":"Opacity",
"description":"English: Opacity"
},
"privacyPageTitle":{
"message":"µMatrix &ndash; Privacy",
"description":""
},
"privacyDeleteBlockedCookiesPrompt":{
"message":"Delete blocked cookies.",
"description":""
},
"privacyDeleteBlockedCookiesHelp":{
"message":"<p>Blacklisted cookies are not prevented by <i>µMatrix<\/i> from entering your browser. However they are prevented from leaving your browser, which is what really matters. Not blocking cookies before they enter your browser gives you the opportunity to be informed that a site tried to use cookies, and furthermore to inspect their contents if you wish.<\/p><p>Once these blacklisted cookies have been accounted for by <i>µMatrix<\/i>, they can be removed from your browser if you wish so.<\/p><p><b>Important note:<\/b> Extensions can make web requests during the course of their normal operation. These requests can result in cookies being created in the browser. If the hostname from where a cookie originate is not whitelisted, the cookie will be removed from the browser by <i>µMatrix<\/i> if this option is checked. So be sure that the hostname(s) with which an extension communicate is whitelisted.<\/p>",
"description":""
},
"privacyDeleteNonBlockedSessionCookiesPrompt1":{
"message":"Delete non-blocked session cookies ",
"description":"First part of 'Delete non-blocked session cookies [n] minutes after the last time they have been used'"
},
"privacyDeleteNonBlockedSessionCookiesPrompt2":{
"message":" minutes after the last time they have been used.",
"description":"Second part of 'Delete non-blocked session cookies [n] minutes after the last time they have been used'"
},
"privacyDeleteNonBlockedSessionCookiesHelp":{
"message":"<p><a href='http:\/\/www.w3.org\/2001\/tag\/2010\/09\/ClientSideStorage.html'>W3C<\/a>: &ldquo;A session cookie ... is erased when you end the browser session. The session cookie is stored in temporary memory and is not retained after the browser is closed.&rdquo;<\/p><p>Except that this <a href='https:\/\/code.google.com\/p\/chromium\/issues\/detail?id=128513'>might not be happening<\/a> when using a Chromium-based browser. Also, to some, having to close the browser in order for the session cookies to clear might not be early enough.<\/p>",
"description":""
},
"privacyDeleteBlockedLocalStoragePrompt":{
"message":"Delete <a href='https:\/\/en.wikipedia.org\/wiki\/Web_storage'>local storage<\/a> content set by blocked hostnames",
"description":""
},
"privacyDeleteBlockedLocalStorageHelp":{
"message":"TODO",
"description":""
},
"privacyClearCachePrompt1":{
"message":"Clear browser cache every",
"description":"First part of 'Clear browser cache every [n] minutes'"
},
"privacyClearCachePrompt2":{
"message":"minutes.",
"description":"Second part of 'Clear browser cache every [n] minutes'"
},
"privacyClearCacheHelp":{
"message":"<p>Some web sites are really bent on tracking you, so much that they will use not-so-nice tricks to work around whatever measures you take in order to not be tracked.<\/p><p>A few of these tricks rely<sup style='font-size:smaller'>[1, 2]<\/sup> on the <a href='https:\/\/en.wikipedia.org\/wiki\/Web_cache'>browser cache<\/a>, which content is often long lasting since rarely will users take the time to regularly clear their browser cache.<\/p><p>There is little inconvenience to clear the browser cache regularly (likelihood is that you won't notice when it happens), and the benefit is to prevent these obnoxious trackers from invading your privacy.<\/p><p>Check this option to have <i>µMatrix<\/i> do it for you, at the interval you wish.<\/p><p style='font-size:smaller'>[1] <a href='https:\/\/grepular.com\/Preventing_Web_Tracking_via_the_Browser_Cache'>&ldquo;Preventing Web Tracking via the Browser Cache&rdquo;<\/a><br>[2] <a href='http:\/\/lucb1e.com\/rp\/cookielesscookies\/'>&ldquo;Cookieless cookies&rdquo;<\/a><\/p>",
"description":""
},
"privacyProcessRefererPrompt":{
"message":"Spoof <a href='https:\/\/en.wikipedia.org\/wiki\/HTTP_referer'>HTTP referrer<\/a> string of third-party requests.",
"description":""
},
"privacyProcessRefererHelp":{
"message":"<p>From Wikipedia:<\/p><blockquote>HTTP referer is an HTTP header field that identifies the address of the webpage that linked to the resource being requested. ... <b>Because referer information can violate privacy, some web browsers allow the user to disable the sending of referer information.<\/b><\/blockquote><p>If this setting is checked, <i>µMatrix<\/i> will spoof the HTTP referrer information if the domain name of the HTTP referrer is third-party to the domain name of net request.",
"description":""
},
"privacyNoMixedContentPrompt":{
"message":"Strict HTTPS: forbid mixed content.",
"description":""
},
"privacyNoMixedContentHelp":{
"message":"<p>From <a href='https:\/\/developer.mozilla.org\/en-US\/docs\/Security\/MixedContent'>Mozilla Developer Network<\/a>:<\/p><blockquote>If [a] HTTPS page includes content retrieved through regular, cleartext HTTP, then the connection is only partially encrypted: the unencrypted content is accessible to sniffers and can be modified by man-in-the-middle attackers, and therefore the connection is not safeguarded anymore. When a webpage exhibits this behavior, it is called a mixed content page.<\/blockquote>",
"description":""
},
"privacyProcessHyperlinkAuditingPrompt":{
"message":"Block all <a href='http:\/\/www.whatwg.org\/specs\/web-apps\/current-work\/multipage\/links.html#hyperlink-auditing'>hyperlink auditing<\/a> attempts.",
"description":""
},
"privacyProcessHyperlinkAuditingHelp":{
"message":"<p>Hyperlink auditing is a mechanism which allow a party, <b>any party<\/b>, to be informed about which link a user clicked on a particular web page. It is essentially a tracking feature: it allows a web site, or any third-party to that web site, to be informed about which link you clicked on which one of its web pages. The sole purpose is to track your browsing activity.<\/p>",
"description":""
},
"privacySpoofUserAgentPrompt1":{
"message":"Spoof <a href='https:\/\/en.wikipedia.org\/wiki\/User_agent'>User-Agent<\/a> string by randomly picking a new one below every",
"description":"First part of UA-spoofing prompt"
},
"privacySpoofUserAgentPrompt2":{
"message":"minutes.",
"description":"Second part"
},
"privacySpoofUserAgentHelp":{
"message":"<a href='https:\/\/www.eff.org\/deeplinks\/2010\/01\/tracking-by-user-agent'>According to the <i>Electronic Frontier Foundation<\/i><\/a>: &ldquo;[...] your browser sends a &lsquo;User Agent&rsquo; header to the website saying precisely which operating system and web browser you are using. This information could help distinguish Internet users from one another because these versions differ, often considerably, from person to person. [...] <b>the User Agent string becomes a real privacy problem<\/b>.&rdquo;<p>This option allows you to address the privacy issue raised by the EFF.<\/p><p>You can supply your own list of user agent strings. One string per line. Blank lines and lines prefixed with &lsquo;#&rsquo; will be ignored.<\/p>",
"description":""
},
"privacyBehindTheSceneHeader":{
"message":"Chromium: behind-the-scene requests",
"description":""
},
"privacyProcessBehindTheSceneHelp":{
"message":"<p>According to <a href='https:\/\/www.google.com\/intl\/en\/chrome\/browser\/privacy\/whitepaper.html'>Google Chrome Privacy Whitepaper<\/a>, <i>Chromium<\/i> might send HTTP requests to <i>Google<\/i> without the user expressly visiting a web page. Let's call these special requests <strong>behind-the-scene<\/strong> requests. Also, other installed browser extensions can send <strong>behind-the-scene<\/strong> HTTP requests.<\/p><p><i>µMatrix<\/i> lets you intercept and treat these requests like any other request: they can be processed in order to allow\/block them as per your whitelist\/blacklist.<\/p><p>Click the extension icon while viewing this page to get started. Required reading: <a href='https:\/\/github.com\/gorhill\/httpswitchboard\/wiki\/Behind-the-scene-requests'>Behind-the-scene requests<\/a>.<\/p><div class='warn'><p><span style='color:red; font-weight:bold'>Beware!<\/span> Blocking <strong>behind-the-scene<\/strong> net requests is potentially causing <a href='https:\/\/github.com\/gorhill\/httpswitchboard\/issues\/27'>an issue<\/a> when the user wants to install an extension from the Chrome store (including maybe preventing extensions from being updated), hence the ability to disable the feature here. Blocking can also cause other installed extensions to not work properly (those querying for remote data).<\/p><p>Even if this feature is not enabled, <strong>behind-the-scene<\/strong> requests are still logged by <i>µMatrix<\/i>. You can inspect these requests on the <a href='dashboard.html#statistics'>Statistics<\/a> page.<\/p>",
"description":""
},
"userRulesPermanentHeader":{
"message":"Permanent rules",
"description":""
},
"userRulesTemporaryHeader":{
"message":"Temporary rules",
"description":""
},
"userRulesRevert":{
"message":"Revert",
"description":"Will remove all temporary rules"
},
"userRulesCommit":{
"message":"Commit",
"description":"Will save all temporary rules"
},
"userRulesEdit":{
"message":"Edit",
"description":"Will enable manual-edit mode (textarea)"
},
"userRulesEditSave":{
"message":"Save",
"description":"Will save manually-edited content and exit manual-edit mode"
},
"userRulesEditDicard":{
"message":"Discard",
"description":"Will discard manually-edited content and exit manual-edit mode"
},
"userRulesImport":{
"message":"Import from file...",
"description":""
},
"userRulesExport":{
"message":"Export to file...",
"description":""
},
"userRulesFormatHint":{
"message":"See this page for rule syntax.",
"description":""
},
"userRulesDefaultFileName":{
"message":"my-umatrix-rules.txt",
"description":"default file name to use"
},
"hostsFilesPrompt":{
"message":"All hostnames in a hosts file are loaded as blacklisted hostnames in the global scope.",
"description":""
},
"hostsFilesStats":{
"message":"{{blockedHostnameCount}} distinct blocked hostnames from:",
"description":""
},
"hostsFilesPerFileStats":{
"message":"{{used}} used out of {{total}}",
"description":""
},
"hostsFilesApplyChanges":{
"message":"Apply changes",
"description":""
},
"hostsFilesAutoUpdatePrompt":{
"message":"Auto-update hosts files.",
"description":""
},
"hostsFilesUpdateNow":{
"message":"Update now",
"description":""
},
"hostsFilesPurgeAll":{
"message":"Purge all caches",
"description":""
},
"hostsFilesExternalListsHint":{
"message":"One URL per line. Lines prefixed with &lsquo;#&rsquo; will be ignored. Invalid URLs will be silently ignored.",
"description":""
},
"hostsFilesExternalListsParse":{
"message":"Parse",
"description":""
},
"hostsFilesExternalListPurge":{
"message":"purge cache",
"description":""
},
"hostsFilesExternalListNew":{
"message":"new version available",
"description":""
},
"hostsFilesExternalListObsolete":{
"message":"outdated",
"description":""
},
"aboutChangelog":{
"message":"<a href='https:\/\/github.com\/gorhill\/uMatrix\/releases'>Change log<\/a>",
"description":""
},
"aboutStorageUsed":{
"message":"Storage used: {{storageUsed}} bytes",
"description":""
},
"aboutDoc":{
"message":"<a href='https:\/\/github.com\/gorhill\/uMatrix\/wiki'>Documentation<\/a>",
"description":""
},
"aboutPermissions":{
"message":"<a href='https:\/\/github.com\/gorhill\/httpswitchboard\/wiki\/Permissions'>Permissions<\/a>",
"description":""
},
"aboutCode":{
"message":"Source code (GPLv3)",
"description":""
},
"aboutIssues":{
"message":"Bugs and issues",
"description":""
},
"aboutContributors":{
"message":"Contributors",
"description":"English: Contributors"
},
"aboutCodeContributors":{
"message":"Code:",
"description":""
},
"aboutIssueContributors":{
"message":"Issues:",
"description":""
},
"aboutTranslationContributors":{
"message":"Translations:",
"description":""
},
"aboutUserDataHeader":{
"message":"Your data",
"description":""
},
"aboutBackupButton":{
"message":"Backup to file...",
"description":""
},
"aboutBackupFilename":{
"message":"my-umatrix-backup.txt",
"description":"default filename to use"
},
"aboutRestoreButton":{
"message":"Restore from file...",
"description":""
},
"aboutRestoreConfirm":{
"message":"All your settings will be overwritten using data backed up on {{time}}, and µMatrix will restart.\n\nOverwrite all existing settings using backed up data?",
"description":"Message asking user to confirm restore"
},
"aboutRestoreError":{
"message":"The data could not be read or is invalid",
"description":""
},
"aboutOr":{
"message":"... or ...",
"description":"English: ... or ..."
},
"aboutResetButton":{
"message":"Reset to default settings",
"description":"English: Reset to default settings"
},
"aboutResetConfirm":{
"message":"Caution! this will remove all your custom settings. Are you sure you want to proceed?",
"description":"Message asking user to confirm reset"
},
"commandRevertAll":{
"message":"Remove all temporary changes",
"description":""
},
"commandWhitelistPageDomain":{
"message":"Temporarily whitelist page domain",
"description":""
},
"commandWhitelistAll":{
"message":"Temporarily whitelist all",
"description":""
},
"commandOpenDashboard":{
"message":"Open dashboard",
"description":""
},
"errorCantConnectTo":{
"message":"Network error: Unable to connect to {{url}}",
"description":""
}
}

@ -63,8 +63,9 @@ html.rtl {
color: black;
content: attr(data-tip);
font: 12px sans-serif;
left: -100%;
line-height: 140%;
min-width: 40vw;
min-width: 25vw;
padding: 4px 6px;
position: absolute;
text-align: start;

@ -113,6 +113,11 @@ body[dir="rtl"] #mtxSwitches > li:before {
color: #000;
content: '\f205';
}
#buttonRevertAll:before {
content: '\f122';
font: 110% FontAwesome;
padding-right: 0.5em;
}
[data-i18n="matrixLoggerMenuEntry"]:before {
content: '\f022';
font: 110% FontAwesome;
@ -185,32 +190,7 @@ body[dir="rtl"] #mtxSwitches > li:before {
}
#buttonReload {
margin-right: 1em;
}
body #buttonRevertAll {
position: relative;
color: transparent;
}
body #buttonRevertAll > span {
color: black;
font-size: 60%;
position: absolute;
}
body #buttonRevertAll > span:nth-of-type(1) {
left: 3px;
top: 3px;
}
body #buttonRevertAll > span:nth-of-type(2) {
right: 3px;
top: 3px;
}
body #buttonRevertAll > span:nth-of-type(3) {
right: 3px;
bottom: 3px;
}
body #buttonRevertAll > span:nth-of-type(4) {
left: 3px;
bottom: 3px;
margin-left: 1em;
}
button > span.badge {

@ -36,7 +36,7 @@ var messager = vAPI.messaging.channel('about.js');
var backupUserDataToFile = function() {
var userDataReady = function(userData) {
vAPI.download({
'url': 'data:text/plain,' + encodeURIComponent(JSON.stringify(userData)),
'url': 'data:text/plain,' + encodeURIComponent(JSON.stringify(userData, null, 2)),
'filename': uDom('[data-i18n="aboutBackupFilename"]').text()
});
};

@ -1101,6 +1101,7 @@ function revertAll() {
what: 'revertTemporaryMatrix'
};
messager.send(request, updateMatrixSnapshot);
dropDownMenuHide();
}
/******************************************************************************/

@ -37,13 +37,6 @@ var µm = µMatrix;
/******************************************************************************/
// Important: raise barrier to remote fetching: we do not want resources to
// be pulled from remote server at start up time.
µm.assets.remoteFetchBarrier += 1;
/******************************************************************************/
var defaultLocalUserSettings = {
placeholderBackground: [
'linear-gradient(0deg,',
@ -83,6 +76,13 @@ var defaultLocalUserSettings = {
/******************************************************************************/
// Important: raise barrier to remote fetching: we do not want resources to
// be pulled from remote server at start up time.
µm.assets.remoteFetchBarrier += 1;
/******************************************************************************/
var onAllDone = function() {
µm.webRequest.start();
@ -93,10 +93,6 @@ var onAllDone = function() {
µm.assetUpdater.onAssetUpdated.addListener(µm.assetUpdatedHandler.bind(µm));
µm.assets.onAssetCacheRemoved.addListener(µm.assetCacheRemovedHandler.bind(µm));
// Important: remove barrier to remote fetching, this was useful only
// for launch time.
µm.assets.remoteFetchBarrier -= 1;
for ( var key in defaultLocalUserSettings ) {
if ( defaultLocalUserSettings.hasOwnProperty(key) === false ) {
continue;
@ -123,16 +119,16 @@ var onTabsReady = function(tabs) {
onAllDone();
};
var onSettingsReady = function(settings) {
µm.loadHostsFiles();
};
var onMatrixReady = function() {
var onHostsFilesLoaded = function() {
// Important: remove barrier to remote fetching, this was useful only
// for launch time.
µm.assets.remoteFetchBarrier -= 1;
};
var onPSLReady = function() {
µm.loadUserSettings(onSettingsReady);
µm.loadMatrix(onMatrixReady);
µm.loadHostsFiles(onHostsFilesLoaded);
µm.loadUserSettings();
µm.loadMatrix();
// rhill 2013-11-24: bind behind-the-scene virtual tab/url manually, since the
// normal way forbid binding behind the scene tab.

@ -43,15 +43,15 @@
<button id="buttonPersist" type="button" class="fa scopeRel tip-anchor-left" data-i18n-tip="matrixPersistButtonTip">&#xf023;<span class="badge"></span></button>
<button id="buttonRevertScope" type="button" class="fa scopeRel tip-anchor-left" tabindex="-1" data-i18n-tip="matrixRevertButtonTip">&#xf12d;</button>
<button id="buttonReload" type="button" class="fa tip-anchor-left" data-i18n-tip="matrixReloadButton">&#xf021;</button>
</div>
<!-- Yandex: float works correctly only if it is the first child -->
<div class="toolbar alignRight">
<button id="buttonReload" type="button" class="fa tip-anchor-right" data-i18n-tip="matrixReloadButton">&#xf021;</button>
<button id="buttonRevertAll" type="button" class="fa tip-anchor-right" tabindex="-1" data-i18n-tip="matrixRevertButtonAllTip">&#xf12d;<span class="fa">&#xf12d;</span><span class="fa">&#xf12d;</span><span class="fa">&#xf12d;</span><span class="fa">&#xf12d;</span></button>
<button type="button" class="dropdown-menu-button fa tip-anchor-right">&#xf067;</button>
<div class="dropdown-menu">
<ul>
<li id="buttonRevertAll" class="dropdown-menu-entry" data-i18n="matrixRevertAllEntry">
<li class="dropdown-menu-entry extensionURL" data-extension-url="logger-ui.html" data-i18n="matrixLoggerMenuEntry">
<li class="dropdown-menu-entry extensionURL" data-extension-url="dashboard.html" data-i18n="matrixDashboardMenuEntry">
</ul>

Loading…
Cancel
Save