Compare commits
1 commit
107-dark-m
...
master
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4ad9866c4b |
12 changed files with 3648 additions and 523 deletions
|
@ -221,16 +221,21 @@ If you wanted to have the js in-line, then you can use the `-j` or `--local-js`
|
|||
|
||||
There's an old saying that goes, "If you know more than one language you're multilingual, if you don't you're British." Not only is that a damning indictment of the British mentality towards other languages, but also goes to explain why the UI has only so far been in English - because I am, for all my sins, British.
|
||||
|
||||
However, it is now possible to build the interface with a different language. Currently, thanks to a contributor, French is also supported. If anyone else wants to contribute additional language packs, please submit a PR!
|
||||
However, it is now possible to build the interface with a different language. Currently, thanks to contributors, French and Spanish are also supported. If anyone else wants to contribute additional language packs, please submit a PR!
|
||||
|
||||
If the language pack is in the `build/_languages/` directory then you can use that with the `-l` or `--lang` flag. For example, if there is a `fr.json` language pack then you can use `php ./build/build.php -l fr` in order to build with that language.
|
||||
|
||||
There have been a few composer scripts added to help with the building. They are, `composer build`, `composer build-french`, and `composer build-spanish`.
|
||||
|
||||
If you want to create a language file then `build/_languages/example.json` contains all you need. It's a simple json structure with the key being the English version which matches what's in the UI, and the value is what you're converting it to - which in the example file is just blank. If a value is empty or the index doesn't exist for a translation, then it'll just use the English version. This gives you the ability to replace some or all of the interface strings as you see fit.
|
||||
|
||||
So to get started with a new language, copy the `example.json` to the language you want that doesn't already exist - for example, `pt-br.json`. Then fill in the translations into the values. Once done, rebuild with `php ./build/build.php -l pt-br`.
|
||||
To get started with a new language, copy the `example.json` to the language you want that doesn't already exist - for example, `pt-br.json` or `pirate.json`. Then fill in the translations into the values. Once done, rebuild with `php ./build/build.php -l pt-br` or `php ./build/build.php -l pirate`.
|
||||
|
||||
## Releases
|
||||
|
||||
**Version 3.5.5**\
|
||||
Added Spanish translations thanks to @cvc90 (PR#110)
|
||||
|
||||
**Version 3.5.4**\
|
||||
Better handling of whether JIT is enabled or disabled. Now also shows _why_ it might be disabled even if you have the setting turned on. The interface also disables the graph and memory stats correctly for JIT if it's disabled for any reason.
|
||||
|
||||
|
|
|
@ -91,7 +91,10 @@ class Interface extends React.Component {
|
|||
txt={this.txt}
|
||||
/>
|
||||
</header>
|
||||
<Footer version={this.props.opstate.version.gui} />
|
||||
<Footer
|
||||
version={this.props.opstate.version.gui}
|
||||
txt={this.txt}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
@ -166,28 +169,17 @@ function MainNavigation(props) {
|
|||
{
|
||||
props.allow.reset &&
|
||||
<div label={props.txt("Reset cache")} tabId="resetCache"
|
||||
className={`nav-tab-link-reset${props.resetting ? ' is-resetting activated' : ''}`}
|
||||
handler={props.resetHandler}
|
||||
tabIndex={5}
|
||||
icon={(
|
||||
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewBox="0 0 489.645 489.645">
|
||||
<path d="M460.656,132.911c-58.7-122.1-212.2-166.5-331.8-104.1c-9.4,5.2-13.5,16.6-8.3,27c5.2,9.4,16.6,13.5,27,8.3 c99.9-52,227.4-14.9,276.7,86.3c65.4,134.3-19,236.7-87.4,274.6c-93.1,51.7-211.2,17.4-267.6-70.7l69.3,14.5 c10.4,2.1,21.8-4.2,23.9-15.6c2.1-10.4-4.2-21.8-15.6-23.9l-122.8-25c-20.6-2-25,16.6-23.9,22.9l15.6,123.8 c1,10.4,9.4,17.7,19.8,17.7c12.8,0,20.8-12.5,19.8-23.9l-6-50.5c57.4,70.8,170.3,131.2,307.4,68.2 C414.856,432.511,548.256,314.811,460.656,132.911z"/>
|
||||
</svg>
|
||||
)}
|
||||
className={`nav-tab-link-reset${props.resetting ? ' is-resetting pulse' : ''}`}
|
||||
handler={props.resetHandler}
|
||||
tabIndex={5}
|
||||
></div>
|
||||
}
|
||||
{
|
||||
props.allow.realtime &&
|
||||
<div label={props.txt(`${props.realtime ? 'Disable' : 'Enable'} real-time update`)} tabId="toggleRealtime"
|
||||
className={`nav-tab-link-realtime${props.realtime ? ' live-update activated' : ''}`}
|
||||
className={`nav-tab-link-realtime${props.realtime ? ' live-update pulse' : ''}`}
|
||||
handler={props.realtimeHandler}
|
||||
tabIndex={6}
|
||||
icon={(
|
||||
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewBox="0 0 489.698 489.698">
|
||||
<path d="M468.999,227.774c-11.4,0-20.8,8.3-20.8,19.8c-1,74.9-44.2,142.6-110.3,178.9c-99.6,54.7-216,5.6-260.6-61l62.9,13.1 c10.4,2.1,21.8-4.2,23.9-15.6c2.1-10.4-4.2-21.8-15.6-23.9l-123.7-26c-7.2-1.7-26.1,3.5-23.9,22.9l15.6,124.8 c1,10.4,9.4,17.7,19.8,17.7c15.5,0,21.8-11.4,20.8-22.9l-7.3-60.9c101.1,121.3,229.4,104.4,306.8,69.3 c80.1-42.7,131.1-124.8,132.1-215.4C488.799,237.174,480.399,227.774,468.999,227.774z"/>
|
||||
<path d="M20.599,261.874c11.4,0,20.8-8.3,20.8-19.8c1-74.9,44.2-142.6,110.3-178.9c99.6-54.7,216-5.6,260.6,61l-62.9-13.1 c-10.4-2.1-21.8,4.2-23.9,15.6c-2.1,10.4,4.2,21.8,15.6,23.9l123.8,26c7.2,1.7,26.1-3.5,23.9-22.9l-15.6-124.8 c-1-10.4-9.4-17.7-19.8-17.7c-15.5,0-21.8,11.4-20.8,22.9l7.2,60.9c-101.1-121.2-229.4-104.4-306.8-69.2 c-80.1,42.6-131.1,124.8-132.2,215.3C0.799,252.574,9.199,261.874,20.599,261.874z"/>
|
||||
</svg>
|
||||
)}
|
||||
></div>
|
||||
}
|
||||
</Tabs>
|
||||
|
@ -201,7 +193,6 @@ class Tabs extends React.Component {
|
|||
super(props);
|
||||
this.state = {
|
||||
activeTab: this.props.children[0].props.label,
|
||||
colourMode: 0, // 0 = light, 1 = dark
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -209,22 +200,10 @@ class Tabs extends React.Component {
|
|||
this.setState({ activeTab: tab });
|
||||
}
|
||||
|
||||
onClickModeSwitch = (event) => {
|
||||
event.stopPropagation()
|
||||
console.log(event)
|
||||
this.setState({ colourMode: event.target.checked ? 1 : 0 });
|
||||
if (event.target.checked) {
|
||||
document.body.classList.add('dark-mode');
|
||||
} else {
|
||||
document.body.classList.remove('dark-mode');
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const {
|
||||
onClickTabItem,
|
||||
onClickModeSwitch,
|
||||
state: { activeTab, colourMode }
|
||||
state: { activeTab }
|
||||
} = this;
|
||||
|
||||
const children = this.props.children.filter(Boolean);
|
||||
|
@ -233,7 +212,7 @@ class Tabs extends React.Component {
|
|||
<>
|
||||
<ul className="nav-tab-list">
|
||||
{children.map((child) => {
|
||||
const { tabId, label, className, handler, tabIndex, icon } = child.props;
|
||||
const { tabId, label, className, handler, tabIndex } = child.props;
|
||||
return (
|
||||
<Tab
|
||||
activeTab={activeTab}
|
||||
|
@ -243,33 +222,9 @@ class Tabs extends React.Component {
|
|||
className={className}
|
||||
tabIndex={tabIndex}
|
||||
tabId={tabId}
|
||||
icon={icon}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
|
||||
<Tab
|
||||
activeTab={activeTab}
|
||||
key={7}
|
||||
label={(
|
||||
<div className="mode-container" onClick={onClickModeSwitch}>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" d="M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.227l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z" />
|
||||
</svg>
|
||||
<label className="switch mode-switch">
|
||||
<input type="checkbox" name="dark_mode" id="dark_mode" value={colourMode} />
|
||||
<label htmlFor="dark_mode" data-on="Dark" data-off="Light" className="mode-switch-inner"></label>
|
||||
</label>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" strokeWidth={1.5} stroke="currentColor">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" d="M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z" />
|
||||
</svg>
|
||||
</div>
|
||||
)}
|
||||
onClick={() => null}
|
||||
className=""
|
||||
tabIndex={7}
|
||||
tabId="mode-switch"
|
||||
/>
|
||||
</ul>
|
||||
<div className="tab-content">
|
||||
{children.map((child) => (
|
||||
|
@ -296,7 +251,7 @@ class Tab extends React.Component {
|
|||
render() {
|
||||
const {
|
||||
onClick,
|
||||
props: { activeTab, label, tabIndex, tabId, icon },
|
||||
props: { activeTab, label, tabIndex, tabId },
|
||||
} = this;
|
||||
|
||||
let className = 'nav-tab';
|
||||
|
@ -313,7 +268,7 @@ class Tab extends React.Component {
|
|||
tabIndex={tabIndex}
|
||||
role="tab"
|
||||
aria-controls={`${tabId}-content`}
|
||||
>{icon}{label}</li>
|
||||
>{label}</li>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -1235,17 +1190,13 @@ function Footer(props) {
|
|||
<footer className="main-footer">
|
||||
<a className="github-link" href="https://github.com/amnuts/opcache-gui"
|
||||
target="_blank"
|
||||
title="opcache-gui (currently version {props.version}) on GitHub"
|
||||
><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" width="1.19em" height="1em" viewBox="0 0 1664 1408">
|
||||
<path d="M640 960q0 40-12.5 82t-43 76t-72.5 34t-72.5-34t-43-76t-12.5-82t12.5-82t43-76t72.5-34t72.5 34t43 76t12.5 82zm640 0q0 40-12.5 82t-43 76t-72.5 34t-72.5-34t-43-76t-12.5-82t12.5-82t43-76t72.5-34t72.5 34t43 76t12.5 82zm160 0q0-120-69-204t-187-84q-41 0-195 21q-71 11-157 11t-157-11q-152-21-195-21q-118 0-187 84t-69 204q0 88 32 153.5t81 103t122 60t140 29.5t149 7h168q82 0 149-7t140-29.5t122-60t81-103t32-153.5zm224-176q0 207-61 331q-38 77-105.5 133t-141 86t-170 47.5t-171.5 22t-167 4.5q-78 0-142-3t-147.5-12.5t-152.5-30t-137-51.5t-121-81t-86-115Q0 992 0 784q0-237 136-396q-27-82-27-170q0-116 51-218q108 0 190 39.5T539 163q147-35 309-35q148 0 280 32q105-82 187-121t189-39q51 102 51 218q0 87-27 168q136 160 136 398z"/>
|
||||
</svg> https://github.com/amnuts/opcache-gui, v{props.version}</a>
|
||||
title={props.txt("opcache-gui (currently version {0}) on GitHub", props.version)}
|
||||
>https://github.com/amnuts/opcache-gui - {props.txt("version {0}", props.version)}</a>
|
||||
|
||||
<a className="sponsor-link" href="https://github.com/sponsors/amnuts"
|
||||
target="_blank"
|
||||
title="Sponsor this project and author on GitHub"
|
||||
><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||
<path fill="crimson" d="M12 21.35l-1.45-1.32c-5.15-4.67-8.55-7.75-8.55-11.53 0-3.08 2.42-5.5 5.5-5.5 1.74 0 3.41.81 4.5 2.09 1.09-1.28 2.76-2.09 4.5-2.09 3.08 0 5.5 2.42 5.5 5.5 0 3.78-3.4 6.86-8.55 11.54l-1.45 1.31z"/>
|
||||
</svg> Sponsor this project</a>
|
||||
title={props.txt("Sponsor this project and author on GitHub")}
|
||||
>{props.txt("Sponsor this project")}</a>
|
||||
</footer>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,111 +1,41 @@
|
|||
$light-background: #FFF;
|
||||
$light-font-color: #000;
|
||||
$light-nav-header-color: #6CA6EF;
|
||||
$light-nav-hover-color: #F4F4F4;
|
||||
$light-nav-border-color: #CCC;
|
||||
$light-nav-background-color: #FFF;
|
||||
$light-nav-icon-color: #626262;
|
||||
$light-nav-icon-active-color: #00ba00;
|
||||
$light-table-header-color: #6CA6EF;
|
||||
$light-table-row-color: #EFFEFF;
|
||||
$light-table-row-color-alternative: #E0ECEF;
|
||||
$light-table-row-border-color: #FFF;
|
||||
$light-table-header-font-color: #FFF;
|
||||
$light-table-header-border-color: #FFF;
|
||||
$light-widget-header-color: #CDCDCD;
|
||||
$light-widget-background-color: #EDEDED;
|
||||
$light-widget-graph-fill-color: #6CA6EF;
|
||||
$light-widget-graph-background-color: #E5E7E7E7;
|
||||
$light-pagination-active-color: #4d75af;
|
||||
$light-pagination-active-font-color: #FFF;
|
||||
$light-pagination-hover-color: #FF7400;
|
||||
$light-pagination-hover-font-color: #FFF;
|
||||
$light-footer-border-color: #CCC;
|
||||
$nav-header-color: #6CA6EF;
|
||||
$nav-hover-color: #F4F4F4;
|
||||
$nav-border-color: #CCC;
|
||||
$nav-background-color: #FFF;
|
||||
$nav-icon-color: #626262;
|
||||
$nav-icon-active-color: #00ba00;
|
||||
|
||||
$dark-background: #282A36;
|
||||
$dark-font-color: #EAEAEA;
|
||||
$dark-nav-header-color: #6272A4;
|
||||
$dark-nav-hover-color: #282A36;
|
||||
$dark-nav-border-color: #44475A;
|
||||
$dark-nav-background-color: #282A36;
|
||||
$dark-nav-icon-color: #BD93F9;
|
||||
$dark-nav-icon-active-color: #50FA7B;
|
||||
$dark-table-header-color: #6272A4;
|
||||
$dark-table-row-color: #282A36;
|
||||
$dark-table-row-color-alternative: #44475A;
|
||||
$dark-table-row-border-color: #282A36;
|
||||
$dark-table-header-font-color: #BD93F9;
|
||||
$dark-table-header-border-color: #BD93F9;
|
||||
$dark-widget-header-color: #44475A;
|
||||
$dark-widget-background-color: #282A36;
|
||||
$dark-widget-graph-fill-color: #6272A4;
|
||||
$dark-widget-graph-background-color: #44475A;
|
||||
$dark-pagination-active-color: #FF79C6;
|
||||
$dark-pagination-active-font-color: #282A36;
|
||||
$dark-pagination-hover-color: #FF6E6E;
|
||||
$dark-pagination-hover-font-color: #282A36;
|
||||
$dark-footer-border-color: #44475A;
|
||||
$table-header-color: #6CA6EF;
|
||||
$table-row-color: #EFFEFF;
|
||||
$table-row-color-alternative: #E0ECEF;
|
||||
$table-row-border-color: #FFF;
|
||||
$table-header-font-color: #FFF;
|
||||
$table-header-border-color: #FFF;
|
||||
|
||||
:root {
|
||||
--opcache-gui-graph-track-fill-color: #{$light-widget-graph-fill-color};
|
||||
--opcache-gui-graph-track-background-color: #{$light-widget-graph-background-color};
|
||||
$widget-header-color: #CDCDCD;
|
||||
$widget-background-color: #EDEDED;
|
||||
$widget-graph-fill-color: #6CA6EF;
|
||||
$widget-graph-background-color: #E5E7E7E7;
|
||||
|
||||
$pagination-active-color: #4d75af;
|
||||
$pagination-active-font-color: #FFF;
|
||||
$pagination-hover-color: #FF7400;
|
||||
$pagination-hover-font-color: #FFF;
|
||||
|
||||
$footer-border-color: #CCC;
|
||||
|
||||
@function toRGB ($color) {
|
||||
@return "rgb(" + red($color) + ", " + green($color) + ", " + blue($color)+ ")";
|
||||
}
|
||||
|
||||
body.opcache-gui {
|
||||
--page-background: #{$light-background};
|
||||
--font-color: #{$light-font-color};
|
||||
--nav-header-color: #{$light-nav-header-color};
|
||||
--nav-hover-color: #{$light-nav-hover-color};
|
||||
--nav-border-color: #{$light-nav-border-color};
|
||||
--nav-background-color: #{$light-nav-background-color};
|
||||
--nav-icon-color: #{$light-nav-icon-color};
|
||||
--nav-icon-active-color: #{$light-nav-icon-active-color};
|
||||
--table-header-color: #{$light-table-header-color};
|
||||
--table-row-color: #{$light-table-row-color};
|
||||
--table-row-color-alternative: #{$light-table-row-color-alternative};
|
||||
--table-row-border-color: #{$light-table-row-border-color};
|
||||
--table-header-font-color: #{$light-table-header-font-color};
|
||||
--table-header-border-color: #{$light-table-header-border-color};
|
||||
--widget-header-color: #{$light-widget-header-color};
|
||||
--widget-background-color: #{$light-widget-background-color};
|
||||
--widget-graph-fill-color: #{$light-widget-graph-fill-color};
|
||||
--widget-graph-background-color: #{$light-widget-graph-background-color};
|
||||
--pagination-active-color: #{$light-pagination-active-color};
|
||||
--pagination-active-font-color: #{$light-pagination-active-font-color};
|
||||
--pagination-hover-color: #{$light-pagination-hover-color};
|
||||
--pagination-hover-font-color: #{$light-pagination-hover-font-color};
|
||||
--footer-border-color: #{$light-footer-border-color};
|
||||
:root {
|
||||
--opcache-gui-graph-track-fill-color: #{$widget-graph-fill-color};
|
||||
--opcache-gui-graph-track-background-color: #{$widget-graph-background-color};
|
||||
}
|
||||
|
||||
&.dark-mode {
|
||||
--page-background: #{$dark-background};
|
||||
--font-color: #{$dark-font-color};
|
||||
--nav-header-color: #{$dark-nav-header-color};
|
||||
--nav-hover-color: #{$dark-nav-hover-color};
|
||||
--nav-border-color: #{$dark-nav-border-color};
|
||||
--nav-background-color: #{$dark-nav-background-color};
|
||||
--nav-icon-color: #{$dark-nav-icon-color};
|
||||
--nav-icon-active-color: #{$dark-nav-icon-active-color};
|
||||
--table-header-color: #{$dark-table-header-color};
|
||||
--table-row-color: #{$dark-table-row-color};
|
||||
--table-row-color-alternative: #{$dark-table-row-color-alternative};
|
||||
--table-row-border-color: #{$dark-table-row-border-color};
|
||||
--table-header-font-color: #{$dark-table-header-font-color};
|
||||
--table-header-border-color: #{$dark-table-header-border-color};
|
||||
--widget-header-color: #{$dark-widget-header-color};
|
||||
--widget-background-color: #{$dark-widget-background-color};
|
||||
--widget-graph-fill-color: #{$dark-widget-graph-fill-color};
|
||||
--widget-graph-background-color: #{$dark-widget-graph-background-color};
|
||||
--pagination-active-color: #{$dark-pagination-active-color};
|
||||
--pagination-active-font-color: #{$dark-pagination-active-font-color};
|
||||
--pagination-hover-color: #{$dark-pagination-hover-color};
|
||||
--pagination-hover-font-color: #{$dark-pagination-hover-font-color};
|
||||
--footer-border-color: #{$dark-footer-border-color};
|
||||
}
|
||||
|
||||
background-color: var(--page-background);
|
||||
.opcache-gui {
|
||||
font-family: sans-serif;
|
||||
font-size: 90%;
|
||||
color: var(--font-color);
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
|
@ -135,32 +65,29 @@ body.opcache-gui {
|
|||
list-style-type: none;
|
||||
padding-left: 8px;
|
||||
margin: 0;
|
||||
border-bottom: 1px solid var(--nav-border-color);
|
||||
display: flex;
|
||||
align-items: end;
|
||||
border-bottom: 1px solid $nav-border-color;
|
||||
}
|
||||
|
||||
.nav-tab {
|
||||
display: inline-flex;
|
||||
display: inline-block;
|
||||
margin: 0 0 -1px 0;
|
||||
padding: 15px 30px;
|
||||
border: 1px solid transparent;
|
||||
border-bottom-color: var(--nav-border-color);
|
||||
border-bottom-color: $nav-border-color;
|
||||
text-decoration: none;
|
||||
background-color: var(--nav-background-color);
|
||||
background-color: $nav-background-color;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
align-items: center;
|
||||
|
||||
&:hover {
|
||||
background-color: var(--nav-hover-color);
|
||||
background-color: $nav-hover-color;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
&.active {
|
||||
border: 1px solid var(--nav-border-color);
|
||||
border-bottom-color: var(--nav-background-color);
|
||||
border-top: 3px solid var(--nav-header-color);
|
||||
border: 1px solid $nav-border-color;
|
||||
border-bottom-color: $nav-background-color;
|
||||
border-top: 3px solid $nav-header-color;
|
||||
}
|
||||
|
||||
&.active:hover {
|
||||
|
@ -171,61 +98,38 @@ body.opcache-gui {
|
|||
outline: 0;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
flex: 1;
|
||||
justify-content: end;
|
||||
padding: 0 1rem 0 0;
|
||||
align-self: center;
|
||||
border: 0;
|
||||
|
||||
&:hover {
|
||||
background-color: initial;
|
||||
text-decoration: initial;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav-tab-link-reset, .nav-tab-link-realtime {
|
||||
> svg {
|
||||
overflow: visible;
|
||||
width: 1.1rem;
|
||||
height: 1.1rem;
|
||||
margin-right: 0.5em;
|
||||
|
||||
> path {
|
||||
fill: var(--nav-icon-color);
|
||||
}
|
||||
}
|
||||
|
||||
&.activated {
|
||||
> svg > path {
|
||||
fill: var(--nav-icon-active-color);
|
||||
transform-origin: 50% 50%;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav-tab-link-reset {
|
||||
&.activated {
|
||||
> svg > path {
|
||||
animation: spin-all 2s linear infinite;
|
||||
}
|
||||
}
|
||||
|
||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1.5em" height="1.5em" viewBox="0 0 24 24"><path d="M17.65 6.35A7.958 7.958 0 0 0 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0 1 12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z" fill="#{toRGB($nav-icon-color)}"/></svg>');
|
||||
&.is-resetting {
|
||||
> svg > path {
|
||||
fill: var(--nav-icon-active-color);
|
||||
}
|
||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1.5em" height="1.5em" viewBox="0 0 24 24"><path d="M17.65 6.35A7.958 7.958 0 0 0 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0 1 12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z" fill="#{toRGB($nav-icon-active-color)}"/></svg>');
|
||||
}
|
||||
}
|
||||
|
||||
.nav-tab-link-realtime {
|
||||
&.activated {
|
||||
> svg > path {
|
||||
animation: spin-pause 2s ease-in infinite;
|
||||
}
|
||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1.5em" height="1.5em" viewBox="0 0 24 24"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8s8 3.58 8 8s-3.58 8-8 8z" fill="#{toRGB($nav-icon-color)}"/><path d="M12.5 7H11v6l5.25 3.15l.75-1.23l-4.5-2.67z" fill="#{toRGB($nav-icon-color)}"/></svg>');
|
||||
&.live-update {
|
||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1.5em" height="1.5em" viewBox="0 0 24 24"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8s8 3.58 8 8s-3.58 8-8 8z" fill="#{toRGB($nav-icon-active-color)}"/><path d="M12.5 7H11v6l5.25 3.15l.75-1.23l-4.5-2.67z" fill="#{toRGB($nav-icon-active-color)}"/></svg>');
|
||||
}
|
||||
}
|
||||
|
||||
.nav-tab-link-reset, .nav-tab-link-realtime {
|
||||
position: relative;
|
||||
padding-left: 50px;
|
||||
&.pulse::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 12px;
|
||||
left: 25px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
z-index: 10;
|
||||
opacity: 0;
|
||||
background-color: transparent;
|
||||
border: 2px solid $nav-icon-active-color;
|
||||
border-radius: 100%;
|
||||
animation: pulse 2s linear infinite;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -261,18 +165,18 @@ body.opcache-gui {
|
|||
margin: 0 auto;
|
||||
font-size: 3.2em;
|
||||
font-weight: 100;
|
||||
color: var(--widget-graph-fill-color);
|
||||
color: $widget-graph-fill-color;
|
||||
user-select: none;
|
||||
}
|
||||
}
|
||||
|
||||
.widget-panel {
|
||||
background-color: var(--widget-background-color);
|
||||
background-color: $widget-background-color;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.widget-header {
|
||||
background-color: var(--widget-header-color);
|
||||
background-color: $widget-header-color;
|
||||
padding: 4px 6px;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
|
@ -285,7 +189,7 @@ body.opcache-gui {
|
|||
text-align: center;
|
||||
|
||||
span.large {
|
||||
color: var(--widget-graph-fill-color);
|
||||
color: $widget-graph-fill-color;
|
||||
font-size: 80pt;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
@ -294,7 +198,7 @@ body.opcache-gui {
|
|||
+ span {
|
||||
font-size: 20pt;
|
||||
margin: 0;
|
||||
color: var(--widget-graph-fill-color);
|
||||
color: $widget-graph-fill-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -318,20 +222,19 @@ body.opcache-gui {
|
|||
|
||||
tr {
|
||||
&:nth-child(odd) {
|
||||
background-color: var(--table-row-color);
|
||||
background-color: $table-row-color;
|
||||
}
|
||||
|
||||
&:nth-child(even) {
|
||||
background-color: var(--table-row-color-alternative);
|
||||
background-color: $table-row-color-alternative;
|
||||
}
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: left;
|
||||
padding: 6px;
|
||||
background-color: var(--table-header-color);
|
||||
color: var(--table-header-font-color);
|
||||
border-color: var(--table-header-border-color);
|
||||
background-color: $table-header-color;
|
||||
color: $table-header-font-color;
|
||||
border-color: $table-header-border-color;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
|
@ -339,7 +242,7 @@ body.opcache-gui {
|
|||
padding: 4px 6px;
|
||||
line-height: 1.4em;
|
||||
vertical-align: top;
|
||||
border-color: var(--table-row-border-color);
|
||||
border-color: $table-row-border-color;
|
||||
overflow: hidden;
|
||||
overflow-wrap: break-word;
|
||||
text-overflow: ellipsis;
|
||||
|
@ -381,37 +284,43 @@ body.opcache-gui {
|
|||
display: block;
|
||||
}
|
||||
|
||||
.nav-tab-link-reset,
|
||||
.nav-tab-link-realtime,
|
||||
.github-link,
|
||||
.sponsor-link {
|
||||
background-repeat: no-repeat;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.nav-tab-link-reset,
|
||||
.nav-tab-link-realtime {
|
||||
background-position: 24px 50%;
|
||||
}
|
||||
|
||||
.main-footer {
|
||||
border-top: 1px solid var(--footer-border-color);
|
||||
border-top: 1px solid $footer-border-color;
|
||||
padding: 1em 2em;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.github-link,
|
||||
.sponsor-link {
|
||||
background-position: 0 50%;
|
||||
padding: 2em 0 2em 2.3em;
|
||||
text-decoration: none;
|
||||
opacity: 0.7;
|
||||
font-size: 80%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
> svg {
|
||||
height: 1rem;
|
||||
width: 1rem;
|
||||
margin-right: 0.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.github-link > svg > path {
|
||||
fill: var(--nav-icon-color);
|
||||
.github-link {
|
||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1.19em" height="1em" viewBox="0 0 1664 1408"><path d="M640 960q0 40-12.5 82t-43 76t-72.5 34t-72.5-34t-43-76t-12.5-82t12.5-82t43-76t72.5-34t72.5 34t43 76t12.5 82zm640 0q0 40-12.5 82t-43 76t-72.5 34t-72.5-34t-43-76t-12.5-82t12.5-82t43-76t72.5-34t72.5 34t43 76t12.5 82zm160 0q0-120-69-204t-187-84q-41 0-195 21q-71 11-157 11t-157-11q-152-21-195-21q-118 0-187 84t-69 204q0 88 32 153.5t81 103t122 60t140 29.5t149 7h168q82 0 149-7t140-29.5t122-60t81-103t32-153.5zm224-176q0 207-61 331q-38 77-105.5 133t-141 86t-170 47.5t-171.5 22t-167 4.5q-78 0-142-3t-147.5-12.5t-152.5-30t-137-51.5t-121-81t-86-115Q0 992 0 784q0-237 136-396q-27-82-27-170q0-116 51-218q108 0 190 39.5T539 163q147-35 309-35q148 0 280 32q105-82 187-121t189-39q51 102 51 218q0 87-27 168q136 160 136 398z" fill="#{toRGB($nav-icon-color)}"/></svg>');
|
||||
}
|
||||
|
||||
.sponsor-link {
|
||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path fill="crimson" d="M12 21.35l-1.45-1.32c-5.15-4.67-8.55-7.75-8.55-11.53 0-3.08 2.42-5.5 5.5-5.5 1.74 0 3.41.81 4.5 2.09 1.09-1.28 2.76-2.09 4.5-2.09 3.08 0 5.5 2.42 5.5 5.5 0 3.78-3.4 6.86-8.55 11.54l-1.45 1.31z"/></svg>');
|
||||
margin-left: 2em;
|
||||
}
|
||||
|
||||
|
@ -457,107 +366,13 @@ body.opcache-gui {
|
|||
}
|
||||
|
||||
&.active {
|
||||
background-color: var(--pagination-active-color);
|
||||
color: var(--pagination-active-font-color);
|
||||
background-color: $pagination-active-color;
|
||||
color: $pagination-active-font-color;
|
||||
}
|
||||
|
||||
&:hover:not(.active) {
|
||||
background-color: var(--pagination-hover-color);
|
||||
color: var(--pagination-hover-font-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mode-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 80%;
|
||||
|
||||
svg {
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
label {
|
||||
color: var(--font-color);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.mode-switch {
|
||||
display: inline-block;
|
||||
margin: 0;
|
||||
position: relative;
|
||||
|
||||
> label.mode-switch-inner {
|
||||
margin: 0;
|
||||
width: 140px;
|
||||
height: 30px;
|
||||
background: #E0E0E0;
|
||||
border-radius: 26px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
transition: all 0.3s ease;
|
||||
display: block;
|
||||
|
||||
&:before {
|
||||
content: attr(data-on);
|
||||
position: absolute;
|
||||
font-weight: 500;
|
||||
top: 7px;
|
||||
right: 20px;
|
||||
|
||||
}
|
||||
|
||||
&:after {
|
||||
content: attr(data-off);
|
||||
width: 70px;
|
||||
height: 16px;
|
||||
background: #fff;
|
||||
border-radius: 26px;
|
||||
position: absolute;
|
||||
left: 2px;
|
||||
top: 2px;
|
||||
text-align: center;
|
||||
transition: all 0.3s ease;
|
||||
box-shadow: 0px 0px 6px -2px #111;
|
||||
padding: 5px 0px;
|
||||
}
|
||||
}
|
||||
|
||||
> .alert {
|
||||
display: none;
|
||||
background: #FF9800;
|
||||
border: none;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
cursor: pointer;
|
||||
width: 50px;
|
||||
height: 25px;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
margin: 0;
|
||||
|
||||
&:checked + label.mode-switch-inner {
|
||||
background: #151515;
|
||||
color: #fff;
|
||||
|
||||
&:after {
|
||||
content: attr(data-on);
|
||||
left: 68px;
|
||||
background: #3c3c3c;
|
||||
}
|
||||
|
||||
&:before {
|
||||
content: attr(data-off);
|
||||
right: auto;
|
||||
left: 20px;
|
||||
}
|
||||
background-color: $pagination-hover-color;
|
||||
color: $pagination-hover-font-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -566,27 +381,10 @@ body.opcache-gui {
|
|||
@media screen and (max-width: 750px) {
|
||||
.nav-tab-list {
|
||||
border-bottom: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: normal;
|
||||
padding: 0;
|
||||
}
|
||||
.nav-tab {
|
||||
display: block;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
border-top: 1px solid var(--nav-border-color);
|
||||
border-left: 15px solid transparent;
|
||||
padding: 15px 30px 15px 15px;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: 1px solid var(--nav-border-color);
|
||||
}
|
||||
|
||||
&.active {
|
||||
border: 0;
|
||||
border-top: 1px solid var(--nav-border-color);
|
||||
border-left: 15px solid var(--nav-header-color);
|
||||
}
|
||||
}
|
||||
.nav-tab-link {
|
||||
display: block;
|
||||
|
@ -595,7 +393,7 @@ body.opcache-gui {
|
|||
border: 0;
|
||||
}
|
||||
.nav-tab-link[data-for].active {
|
||||
border-bottom-color: var(--nav-border-color);
|
||||
border-bottom-color: $nav-border-color;
|
||||
}
|
||||
.tab-content-overview-info {
|
||||
margin-right: auto;
|
||||
|
@ -615,20 +413,13 @@ body.opcache-gui {
|
|||
}
|
||||
}
|
||||
|
||||
@keyframes spin-pause {
|
||||
@keyframes pulse {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
50%, 100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes spin-all {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
50%,100% {
|
||||
transform: scale(2);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
|
113
build/_languages/es.json
Normal file
113
build/_languages/es.json
Normal file
|
@ -0,0 +1,113 @@
|
|||
{
|
||||
"(unsafe) Collect constants": "(inestable) Recoger las constantes",
|
||||
"++, +=, series of jumps": "++, +=, series de saltos",
|
||||
"Adjust used stack": "Ajustar pila usada",
|
||||
"Ascending": "Ascendente",
|
||||
"Available functions": "Funciones disponibles",
|
||||
"blacklist misses": "fallos en la blacklist",
|
||||
"buffer size": "tamaño del búfer",
|
||||
"Cached": "En cache",
|
||||
"CALL GRAPH optimization": "Optimización CALL GRAPH",
|
||||
"CFG based optimization": "Optimización basada en CFG",
|
||||
"Compile all functions on script load": "Compilar todas las funciones al cargar el script",
|
||||
"Compile functions on first execution": "Compilar funciones en la primera ejecución",
|
||||
"Constant conversion and jumps": "Conversión constante y saltos",
|
||||
"CPU-specific optimization": "Optimización específica de la CPU",
|
||||
"CSE, STRING construction": "Construcción CSE, STRING",
|
||||
"Currently unused": "Actualmente sin utilizar",
|
||||
"DCE (dead code elimination)": "DCE (eliminación del código muerto)",
|
||||
"Descending": "Descendente",
|
||||
"DFA based optimization": "Optimización basada en DFA",
|
||||
"Directives": "Directivas",
|
||||
"Disable CPU-specific optimization": "Desactivar la optimización específica de la CPU",
|
||||
"Disable real-time update": "Desactivar la actualización en tiempo real",
|
||||
"Do not perform register allocation": "No realizar la asignación de registros",
|
||||
"Enable real-time update": "Activar la actualización en tiempo real",
|
||||
"Enable use of AVX, if the CPU supports it": "Habilitar el uso de AVX, si la CPU lo soporta",
|
||||
"false": "falso",
|
||||
"File list pagination": "Paginación de la lista de archivos",
|
||||
"force file invalidation": "forzar la invalidación de archivos",
|
||||
"free memory": "memoria libre",
|
||||
"General info": "Información general",
|
||||
"has been invalidated": "se ha invalidado",
|
||||
"hit rate": "índice de aciertos",
|
||||
"hits": "hits",
|
||||
"Host": "Host",
|
||||
"Ignored": "Ignorado",
|
||||
"INIT_FCALL_BY_NAME -> DO_FCALL": "INIT_FCALL_BY_NAME -> DO_FCALL",
|
||||
"Inline functions": "Funciones inline",
|
||||
"Inline VM handlers": "Controladores de VM en línea",
|
||||
"interned strings usage": "utilización de cadenas internas",
|
||||
"Invalidate all matching files": "Invalidar todos los ficheros coincidentes",
|
||||
"jit buffer free": "búfer jit libre",
|
||||
"jit buffer": "búfer jit",
|
||||
"keys": "llaves",
|
||||
"Last modified": "Última modificación",
|
||||
"last modified": "última modificaciónn",
|
||||
"Last reset": "Último reinicio",
|
||||
"Last used": "Último uso",
|
||||
"last used": "último uso",
|
||||
"max cached keys": "llaves máximas en caché",
|
||||
"Memory consumption": "Consumo de memoria",
|
||||
"memory usage": "uso de memoria",
|
||||
"memory": "memoria",
|
||||
"Merge equal constants": "Fusionar las constantes iguales",
|
||||
"Minimal JIT (call standard VM handlers)": "JIT mínimo (llame a controladores de VM estándar)",
|
||||
"never": "nunca",
|
||||
"Next": "Siguiente",
|
||||
"No files have been cached or you have <i>opcache.file_cache_only<\/i> turned on": "No se han almacenado archivos en caché o tiene <i>opcache.file_cache_only<\/i> activado",
|
||||
"No files have been ignored via <i>opcache.blacklist_filename<\/i>": "No se han ignorado archivos a través de <i>opcache.blacklist_filename<\/i>",
|
||||
"No files have been preloaded <i>opcache.preload<\/i>": "No se han precargado archivos <i>opcache.preload<\/i>",
|
||||
"No JIT": "No JIT",
|
||||
"no value": "sin valor",
|
||||
"NOP removal": "Eliminación de NOP",
|
||||
"number of cached files": "número de archivos en caché",
|
||||
"number of cached keys": "número de llaves en caché",
|
||||
"Number of hits": "Número de hits",
|
||||
"number of hits": "número de hits",
|
||||
"number of misses": "número de misses",
|
||||
"number of strings": "número de cadenas",
|
||||
"opcache statistics": "estadísticas de opcache",
|
||||
"Optimization level": "Nivel de optimización",
|
||||
"Optimize whole script": "Optimizar todo el script",
|
||||
"Overview": "Visión general",
|
||||
"Path": "Ruta",
|
||||
"Perform block-local register allocation": "Asignación de registros a nivel local de bloque",
|
||||
"Perform global register allocation": "Realizar la asignación global de registros",
|
||||
"preload memory": "precargar la memoria",
|
||||
"Preloaded": "Precargado",
|
||||
"Previous": "Anterior",
|
||||
"Profile functions on first request and compile the hottest functions afterwards": "Perfile las funciones en la primera solicitud y luego recopile las funciones más populares",
|
||||
"Profile on the fly and compile hot functions": "Perfilar sobre la marcha y compilar funciones en caliente",
|
||||
"Register allocation": "Asignación de registros",
|
||||
"Remove unused variables": "Eliminar variables no utilizadas",
|
||||
"Reset cache": "Restablecer la caché",
|
||||
"SCCP (constant propagation)": "SCCP (propagación de constantes)",
|
||||
"Script": "Script",
|
||||
"Server Software": "Software de servidor",
|
||||
"Sort order": "Orden de clasificación",
|
||||
"Start time": "Hora de inicio",
|
||||
"Start typing to filter on script path": "Empiece a escribir para filtrar por ruta del script",
|
||||
"TMP VAR usage": "Utilización de TMP VAR",
|
||||
"total memory": "memoria total",
|
||||
"Trigger": "Disparador",
|
||||
"true": "verdadero",
|
||||
"Use call graph": "Utilizar el gráfico de llamadas",
|
||||
"Use tracing JIT. Profile on the fly and compile traces for hot code segments": "Utilice el trazado JIT. Perfila sobre la marcha y compila trazas para segmentos de código calientes.",
|
||||
"Use type inference": "Utilizar la inferencia de tipos",
|
||||
"used memory": "memoria utilizada",
|
||||
"View manual page": "Ver la página del manual",
|
||||
"View {0} manual entry": "Ver {0} entrada manual",
|
||||
"wasted memory": "memoria perdida",
|
||||
"You have <i>opcache.file_cache_only<\/i> turned on. As a result, the memory information is not available. Statistics and file list may also not be returned by <i>opcache_get_statistics()<\/i>.": "Tienes <i>opcache.file_cache_only</i> activado. Como resultado, la información de la memoria no está disponible. Es posible que las estadísticas y la lista de archivos tampoco sean devueltas por <i>opcache_get_statistics()<\/i>.",
|
||||
"{0} files cached": "{0} archivos almacenados en caché",
|
||||
"{0} files cached, {1} showing due to filter '{2}'": "{0} archivos almacenados en caché, {1} se visualizan debido al filtro '{2}'",
|
||||
"{0} ignore file locations": "{0} ignorar ubicaciones de archivos",
|
||||
"{0} preloaded files": "{0} archivos precargados",
|
||||
"JIT enabled": "JIT activado",
|
||||
"disabled due to <i>opcache.jit</i> setting": "ddesactivado debido a la configuración de <i>opcache.jit</i>",
|
||||
"the <i>opcache.jit_buffer_size</i> must be set to fully enable JIT": "el <i>opcache.jit_buffer_size</i> debe estar configurado para habilitar completamente JIT",
|
||||
"incompatible with extensions that override <i>zend_execute_ex()</i>, such as <i>xdebug</i>": "incompatible con las extensiones que anulan <i>zend_execute_ex()</i>, como <i>xdebug</i>",
|
||||
"Yes": "Sí",
|
||||
"No": "No"
|
||||
}
|
|
@ -21,6 +21,7 @@
|
|||
"Directives": "",
|
||||
"Disable CPU-specific optimization": "",
|
||||
"Disable real-time update": "",
|
||||
"disabled due to <i>opcache.jit</i> setting": "",
|
||||
"Do not perform register allocation": "",
|
||||
"Enable real-time update": "",
|
||||
"Enable use of AVX, if the CPU supports it": "",
|
||||
|
@ -34,6 +35,7 @@
|
|||
"hits": "",
|
||||
"Host": "",
|
||||
"Ignored": "",
|
||||
"incompatible with extensions that override <i>zend_execute_ex()</i>, such as <i>xdebug</i>": "",
|
||||
"INIT_FCALL_BY_NAME -> DO_FCALL": "",
|
||||
"Inline functions": "",
|
||||
"Inline VM handlers": "",
|
||||
|
@ -41,6 +43,7 @@
|
|||
"Invalidate all matching files": "",
|
||||
"jit buffer free": "",
|
||||
"jit buffer": "",
|
||||
"JIT enabled": "",
|
||||
"keys": "",
|
||||
"Last modified": "",
|
||||
"last modified": "",
|
||||
|
@ -60,6 +63,7 @@
|
|||
"No files have been preloaded <i>opcache.preload<\/i>": "",
|
||||
"No JIT": "",
|
||||
"no value": "",
|
||||
"No": "",
|
||||
"NOP removal": "",
|
||||
"number of cached files": "",
|
||||
"number of cached keys": "",
|
||||
|
@ -86,8 +90,11 @@
|
|||
"Script": "",
|
||||
"Server Software": "",
|
||||
"Sort order": "",
|
||||
"Sponsor this project and author on GitHub": "",
|
||||
"Sponsor this project": "",
|
||||
"Start time": "",
|
||||
"Start typing to filter on script path": "",
|
||||
"the <i>opcache.jit_buffer_size</i> must be set to fully enable JIT": "",
|
||||
"TMP VAR usage": "",
|
||||
"total memory": "",
|
||||
"Trigger": "",
|
||||
|
@ -96,18 +103,14 @@
|
|||
"Use tracing JIT. Profile on the fly and compile traces for hot code segments": "",
|
||||
"Use type inference": "",
|
||||
"used memory": "",
|
||||
"version {0}": "",
|
||||
"View manual page": "",
|
||||
"View {0} manual entry": "",
|
||||
"wasted memory": "",
|
||||
"Yes": "",
|
||||
"You have <i>opcache.file_cache_only<\/i> turned on. As a result, the memory information is not available. Statistics and file list may also not be returned by <i>opcache_get_statistics()<\/i>.": "",
|
||||
"{0} files cached": "",
|
||||
"{0} files cached, {1} showing due to filter '{2}'": "",
|
||||
"{0} ignore file locations": "",
|
||||
"{0} preloaded files": "",
|
||||
"JIT enabled": "",
|
||||
"disabled due to <i>opcache.jit</i> setting": "",
|
||||
"the <i>opcache.jit_buffer_size</i> must be set to fully enable JIT": "",
|
||||
"incompatible with extensions that override <i>zend_execute_ex()</i>, such as <i>xdebug</i>": "",
|
||||
"Yes": "",
|
||||
"No": ""
|
||||
"{0} preloaded files": ""
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* OPcache GUI - build script
|
||||
*
|
||||
* @author Andrew Collington, andy@amnuts.com
|
||||
* @version 3.5.4
|
||||
* @version 3.5.5
|
||||
* @link https://github.com/amnuts/opcache-gui
|
||||
* @license MIT, https://acollington.mit-license.org/
|
||||
*/
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* A simple but effective single-file GUI for the OPcache PHP extension.
|
||||
*
|
||||
* @author Andrew Collington, andy@amnuts.com
|
||||
* @version 3.5.4
|
||||
* @version 3.5.5
|
||||
* @link https://github.com/amnuts/opcache-gui
|
||||
* @license MIT, https://acollington.mit-license.org/
|
||||
*/
|
||||
|
@ -75,9 +75,9 @@ $opcache = (new Service($options))->handle();
|
|||
</style>
|
||||
</head>
|
||||
|
||||
<body style="padding: 0; margin: 0;" class="opcache-gui">
|
||||
<body style="padding: 0; margin: 0;">
|
||||
|
||||
<div id="interface" />
|
||||
<div class="opcache-gui" id="interface" />
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
|
|
|
@ -31,6 +31,8 @@
|
|||
}
|
||||
},
|
||||
"scripts": {
|
||||
"build": "php build/build.php"
|
||||
"build": "php build/build.php",
|
||||
"build-french": "php build/build.php --lang fr",
|
||||
"build-spanish": "php build/build.php --lang es"
|
||||
}
|
||||
}
|
||||
|
|
146
index.php
146
index.php
File diff suppressed because one or more lines are too long
3354
package-lock.json
generated
Normal file
3354
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
18
package.json
18
package.json
|
@ -1,19 +1,18 @@
|
|||
{
|
||||
"name": "opcache-gui",
|
||||
"description": "A clean and responsive interface for Zend OPcache information, showing statistics, settings and cached files, and providing a real-time update for the information (using jQuery and React).",
|
||||
"version": "3.5.4",
|
||||
"version": "3.5.5",
|
||||
"main": "index.js",
|
||||
"devDependencies": {
|
||||
"@babel/cli": "^7.23.0",
|
||||
"@babel/core": "^7.23.2",
|
||||
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
||||
"@babel/preset-react": "^7.22.15",
|
||||
"sass": "^1.69.5"
|
||||
"@babel/cli": "^7.24.7",
|
||||
"@babel/core": "^7.24.7",
|
||||
"@babel/preset-react": "^7.24.7",
|
||||
"node-sass": "^9.0.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"compile-jsx": "node_modules/.bin/babel --presets @babel/preset-react build/_frontend/interface.jsx --plugins @babel/plugin-proposal-class-properties -o build/interface.js",
|
||||
"compile-scss": "node_modules/.bin/sass --no-source-map --style=compressed -q build/_frontend/interface.scss build/interface.css"
|
||||
"compile-scss": "node_modules/.bin/node-sass -xi build/_frontend/interface.scss -o build/ --output-style=compressed"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
@ -24,5 +23,8 @@
|
|||
"bugs": {
|
||||
"url": "https://github.com/amnuts/opcache-gui/issues"
|
||||
},
|
||||
"homepage": "https://github.com/amnuts/opcache-gui#readme"
|
||||
"homepage": "https://github.com/amnuts/opcache-gui#readme",
|
||||
"dependencies": {
|
||||
"@babel/plugin-proposal-class-properties": "^7.12.1"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ use Exception;
|
|||
|
||||
class Service
|
||||
{
|
||||
public const VERSION = '3.5.4';
|
||||
public const VERSION = '3.5.5';
|
||||
|
||||
protected $tz;
|
||||
protected $data;
|
||||
|
|
Loading…
Add table
Reference in a new issue