mirror of
https://github.com/znc/znc.git
synced 2026-08-07 01:13:25 +02:00
Translateable webadmin to Russian.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
<? I18N znc-webadmin ?>
|
||||
<? INC Header.tmpl ?>
|
||||
|
||||
<form action="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?><? IF Edit ?>editchan<? ELSE ?>addchan<? ENDIF ?>" method="post">
|
||||
@@ -8,33 +9,33 @@
|
||||
<input type="hidden" name="network" value="<? VAR Network ?>" />
|
||||
<? IF Edit ?><input type="hidden" name="name" value="<? VAR ChanName ?>" /><? ENDIF ?>
|
||||
|
||||
<h3>Channel Info</h3>
|
||||
<h3><? FORMAT "Channel Info" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<? IF !Edit ?>
|
||||
<div class="subsection half">
|
||||
<div class="inputlabel">Channel Name:</div>
|
||||
<div class="inputlabel"><? FORMAT "Channel Name:" ?></div>
|
||||
<input type="text" name="name" value=""
|
||||
title="The channel name." />
|
||||
title="<? FORMAT "The channel name." ?>"/>
|
||||
</div>
|
||||
<? ENDIF ?>
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Key:</div>
|
||||
<div class="inputlabel"><? FORMAT "Key:" ?></div>
|
||||
<input type="text" name="key" value="<? VAR Key ?>" size="10"
|
||||
title="The password of the channel, if there is one." />
|
||||
title="<? FORMAT "The password of the channel, if there is one." ?>"/>
|
||||
</div>
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Buffer Size:</div>
|
||||
<div class="inputlabel"><? FORMAT "Buffer Size:" ?></div>
|
||||
<input type="number" name="buffersize" value="<? VAR BufferSize ?>" size="10" min="0"
|
||||
title="The buffer count." />
|
||||
title="<? FORMAT "The buffer count." ?>"/>
|
||||
</div>
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Default Modes:</div>
|
||||
<div class="inputlabel"><? FORMAT "Default Modes:" ?></div>
|
||||
<input type="text" name="defmodes" value="<? VAR DefModes ?>" size="10"
|
||||
title="The default modes of the channel." />
|
||||
title="<? FORMAT "The default modes of the channel." ?>"/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -42,17 +43,17 @@
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h3>Flags</h3>
|
||||
<h3><? FORMAT "Flags" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody lotsofcheckboxes">
|
||||
<span class="checkboxandlabel">
|
||||
<input type="checkbox" name="save" id="save" value="true"<? IF InConfig ?> checked="checked"<? ENDIF ?> />
|
||||
<label for="save">Save to config</label>
|
||||
<label for="save"><? FORMAT "Save to config" ?></label>
|
||||
</span>
|
||||
<? LOOP OptionLoop ?>
|
||||
<span class="checkboxandlabel" title="<? VAR Tooltip ?>">
|
||||
<input type="checkbox" name="<? VAR Name ?>" id="opt_<? VAR Name ?>" value="true"<? IF Checked ?> checked="checked"<? ENDIF ?><? IF Disabled ?> disabled="disabled"<? ENDIF ?> />
|
||||
<label for="opt_<? VAR Name ?>"><? VAR DisplayName ?></label>
|
||||
<label for="opt_<? VAR Name ?>"><? VAR DisplayName ESC= ?></label>
|
||||
</span>
|
||||
<? ENDLOOP ?>
|
||||
<div style="clear:both;"></div>
|
||||
@@ -63,15 +64,20 @@
|
||||
<? LOOP EmbeddedModuleLoop ?>
|
||||
<? IF Embed ?>
|
||||
<div class="section">
|
||||
<h3>Module <? VAR ModName ?></h3>
|
||||
<h3><? FORMAT "Module {1}" ModName ?></h3>
|
||||
<? INC *Embed ?>
|
||||
</div>
|
||||
<? ENDIF ?>
|
||||
<? ENDLOOP ?>
|
||||
|
||||
<div class="submitline">
|
||||
<input type="submit" name="submit_return" value="<? IF Edit ?>Save<? ELSE ?>Add Channel<? ENDIF ?> and return" />
|
||||
<input type="submit" name="submit_continue" value="<? IF Edit ?>Save<? ELSE ?>Add Channel<? ENDIF ?> and continue" />
|
||||
<? IF Edit ?>
|
||||
<input type="submit" name="submit_return" value="<? FORMAT "Save and return" ?>"/>
|
||||
<input type="submit" name="submit_continue" value="<? FORMAT "Save and continue" ?>"/>
|
||||
<? ELSE ?>
|
||||
<input type="submit" name="submit_return" value="<? FORMAT "Add Channel and return" ?>"/>
|
||||
<input type="submit" name="submit_continue" value="<? FORMAT "Add Channel and continue" ?>"/>
|
||||
<? ENDIF ?>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
@@ -1,9 +1,17 @@
|
||||
<? I18N znc-webadmin ?>
|
||||
<? AddRow JSLoop HREF=/modfiles/global/webadmin/webadmin.js ?>
|
||||
<? AddRow CSSLoop HREF=/modfiles/global/webadmin/webadmin.css ?>
|
||||
<? INC Header.tmpl ?>
|
||||
|
||||
<div class="section">
|
||||
<p>To connect to this network from your IRC client, you can set the server password field as follows: <code><? VAR Username ?>/<? IF Edit ?><? VAR Name ?><? ELSE ?><network><? ENDIF ?>:<password></code> or username field as <code><? VAR Username ?>/<? IF Edit ?><? VAR Name ?><? ELSE ?><network><? ENDIF ?></code></p>
|
||||
<? IF Edit ?>
|
||||
<? SETBLOCK ClientConnectHint_Password ?><? VAR Username ?>/<? VAR Name ?>:<? FORMAT "<password>" ?><? ENDSETBLOCK ?>
|
||||
<? SETBLOCK ClientConnectHint_Username ?><? VAR Username ?>/<? VAR Name ?><? ENDSETBLOCK ?>
|
||||
<? ELSE ?>
|
||||
<? SETBLOCK ClientConnectHint_Password ?><? VAR Username ?>/<? FORMAT "<network>" ?>:<? FORMAT "<password>" ?><? ENDSETBLOCK ?>
|
||||
<? SETBLOCK ClientConnectHint_Username ?><? VAR Username ?>/<? FORMAT "<network>" ?><? ENDSETBLOCK ?>
|
||||
<? ENDIF ?>
|
||||
<p><? FORMAT "To connect to this network from your IRC client, you can set the server password field as <code>{1}</code> or username field as <code>{2}</code>" "ClientConnectHint_Password ESC=" "ClientConnectHint_Username ESC=" ?>
|
||||
</div>
|
||||
|
||||
<form action="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?><? IF Edit ?>editnetwork<? ELSE ?>addnetwork<? ENDIF ?>" method="post">
|
||||
@@ -13,75 +21,75 @@
|
||||
<input type="hidden" name="user" value="<? VAR Username ?>" />
|
||||
<input type="hidden" name="network" value="<? VAR Name ?>" />
|
||||
|
||||
<h3>Network Info</h3>
|
||||
<span class="info">Nick, AltNick, Ident, RealName, BindHost can be left empty to use the value from the user.</span>
|
||||
<h3><? FORMAT "Network Info" ?></h3>
|
||||
<span class="info"><? FORMAT "Nick, AltNick, Ident, RealName, BindHost can be left empty to use the value from the user." ?></span>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Network Name:</div>
|
||||
<div class="inputlabel"><? FORMAT "Network Name:" ?></div>
|
||||
<input type="text" name="name" value="<? VAR Name ?>" class="half" maxlength="128"
|
||||
title="The name of the IRC network." />
|
||||
title="<? FORMAT "The name of the IRC network." ?>"/>
|
||||
</div>
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Nickname:</div>
|
||||
<div class="inputlabel"><? FORMAT "Nickname:" ?></div>
|
||||
<input type="text" name="nick" value="<? VAR Nick ?>" class="half" maxlength="128"
|
||||
title="Your nickname on IRC." />
|
||||
title="<? FORMAT "Your nickname on IRC." ?>"/>
|
||||
</div>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Alt. Nickname:</div>
|
||||
<div class="inputlabel"><? FORMAT "Alt. Nickname:" ?></div>
|
||||
<input type="text" name="altnick" value="<? VAR AltNick ?>" class="half" maxlength="128"
|
||||
title="Your secondary nickname, if the first is not available on IRC." />
|
||||
title="<? FORMAT "Your secondary nickname, if the first is not available on IRC." ?>"/>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Ident:</div>
|
||||
<div class="inputlabel"><? FORMAT "Ident:" ?></div>
|
||||
<input type="text" name="ident" value="<? VAR Ident ?>" class="half" maxlength="128"
|
||||
title="Your ident." />
|
||||
title="<? FORMAT "Your ident." ?>"/>
|
||||
</div>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Realname:</div>
|
||||
<div class="inputlabel"><? FORMAT "Realname:" ?></div>
|
||||
<input type="text" name="realname" value="<? VAR RealName ?>" class="full" maxlength="256"
|
||||
title="Your real name." />
|
||||
title="<? FORMAT "Your real name." ?>"/>
|
||||
</div>
|
||||
|
||||
<? IF BindHostEdit ?>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">BindHost:</div>
|
||||
<div class="inputlabel"><? FORMAT "BindHost:" ?></div>
|
||||
<input type="text" name="bindhost" value="<? VAR BindHost ?>"/>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
<? ENDIF ?>
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Quit Message:</div>
|
||||
<div class="inputlabel"><? FORMAT "Quit Message:" ?></div>
|
||||
<input type="text" name="quitmsg" value="<? VAR QuitMsg ?>" class="full" maxlength="256"
|
||||
title="You may define a Message shown, when you quit IRC." />
|
||||
title="<? FORMAT "You may define a Message shown, when you quit IRC." ?>"/>
|
||||
</div>
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Active:</div>
|
||||
<div class="inputlabel"><? FORMAT "Active:" ?></div>
|
||||
<div class="checkbox"><input type="checkbox" name="doconnect" id="doconnect_checkbox"<? IF IRCConnectEnabled ?> checked="checked"<? ENDIF ?> />
|
||||
<label for="doconnect_checkbox">Connect to IRC & automatically re-connect</label></div>
|
||||
<label for="doconnect_checkbox"><? FORMAT "Connect to IRC & automatically re-connect" ?></label></div>
|
||||
</div>
|
||||
|
||||
<div class="subsection half" id="servers_plain">
|
||||
<div class="inputlabel">Servers of this IRC network:</div>
|
||||
<div class="inputlabel"><? FORMAT "Servers of this IRC network:" ?></div>
|
||||
<div><textarea name="servers" cols="70" rows="5" id="servers_text"><? LOOP ServerLoop ?><? VAR Server ?>
|
||||
<? ENDLOOP ?>
|
||||
</textarea></div>
|
||||
<br/><span class="info">One server per line, "host [[+]port] [password]", + means SSL</span>
|
||||
<br/><span class="info"><? FORMAT "One server per line, “host [[+]port] [password]”, + means SSL" ?></span>
|
||||
</div>
|
||||
<div class="subsection" id="servers_js" style="display:none">
|
||||
<div>Servers of this IRC network:</div>
|
||||
<div><? FORMAT "Servers of this IRC network:" ?></div>
|
||||
<div>
|
||||
<table style="width:100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Hostname</th>
|
||||
<th>Port</th>
|
||||
<th>SSL</th>
|
||||
<th>Password</th>
|
||||
<th><? FORMAT "Hostname" ?></th>
|
||||
<th><? FORMAT "Port" ?></th>
|
||||
<th><? FORMAT "SSL" ?></th>
|
||||
<th><? FORMAT "Password" ?></th>
|
||||
<th/>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -93,51 +101,57 @@
|
||||
<script type="text/javascript">serverlist_init(jQuery);</script>
|
||||
|
||||
<div class="subsection full">
|
||||
<div class="inputlabel">Trusted SSL fingerprints of this IRC network:</div>
|
||||
<div class="inputlabel"><? FORMAT "SHA-256 fingerprints of trusted SSL certificates of this IRC network:" ?></div>
|
||||
<div><textarea name="fingerprints" cols="50" rows="5"><? LOOP TrustedFingerprints ?><? VAR FP ?>
|
||||
<? ENDLOOP ?>
|
||||
</textarea></div>
|
||||
<br /><span class="info">When these certificates are encountered, checks for hostname, expiration date, CA are skipped</span>
|
||||
<br /><span class="info"><? FORMAT "When these certificates are encountered, checks for hostname, expiration date, CA are skipped" ?></span>
|
||||
</div>
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Flood protection:</div>
|
||||
<div class="inputlabel"><? FORMAT "Flood protection:" ?></div>
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" name="floodprotection" id="floodprotection_checkbox"
|
||||
title="You might enable the flood protection. This prevents `excess flood' errors, which occur, when your IRC bot is command flooded or spammed. After changing this, reconnect ZNC to server."
|
||||
title="<? FORMAT "You might enable the flood protection. This prevents “excess flood” errors, which occur, when your IRC bot is command flooded or spammed. After changing this, reconnect ZNC to server." ?>"
|
||||
onchange="floodprotection_change();"
|
||||
<? IF FloodProtection ?>checked="checked"<? ENDIF ?> />
|
||||
<label for="floodprotection_checkbox">Enabled</label>
|
||||
<label for="floodprotection_checkbox"><? FORMAT CTX="Flood Protection" "Enabled" ?></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Flood protection rate:</div>
|
||||
<input type="number" name="floodrate" min="0.3" step="0.05" id="floodrate"
|
||||
title="The number of seconds per line. After changing this, reconnect ZNC to server."
|
||||
<? IF FloodProtection ?> value="<? VAR FloodRate ?>" <? ELSE ?> value="1.00" disabled="disabled" <? ENDIF ?>
|
||||
/> seconds per line
|
||||
<div class="inputlabel"><? FORMAT "Flood protection rate:" ?></div>
|
||||
<? SETBLOCK FloodInputField_Rate ?>
|
||||
<input type="number" name="floodrate" min="0.3" step="0.05" id="floodrate"
|
||||
title="<? FORMAT "The number of seconds per line. After changing this, reconnect ZNC to server." ?>"
|
||||
<? IF FloodProtection ?> value="<? VAR FloodRate ?>" <? ELSE ?> value="1.00" disabled="disabled" <? ENDIF ?> />
|
||||
<? ENDSETBLOCK ?>
|
||||
<? FORMAT "{1} seconds per line" "FloodInputField_Rate ESC=" ?>
|
||||
</div>
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Flood protection burst:</div>
|
||||
<input type="number" name="floodburst" min="1" id="floodburst"
|
||||
title="Defines the number of lines, which can be sent immediately. After changing this, reconnect ZNC to server."
|
||||
<? IF FloodProtection ?> value="<? VAR FloodBurst ?>" <? ELSE ?> value="4" disabled="disabled" <? ENDIF ?>
|
||||
/> lines can be sent immediately
|
||||
<div class="inputlabel"><? FORMAT "Flood protection burst:" ?></div>
|
||||
<? SETBLOCK FloodInputField_Burst ?>
|
||||
<input type="number" name="floodburst" min="1" id="floodburst"
|
||||
title="<? FORMAT "Defines the number of lines, which can be sent immediately. After changing this, reconnect ZNC to server." ?>"
|
||||
<? IF FloodProtection ?> value="<? VAR FloodBurst ?>" <? ELSE ?> value="4" disabled="disabled" <? ENDIF ?> />
|
||||
<? ENDSETBLOCK ?>
|
||||
<? FORMAT "{1} lines can be sent immediately" "FloodInputField_Burst ESC=" ?>
|
||||
</div>
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Channel join delay:</div>
|
||||
<input type="number" name="joindelay" min="0" id="joindelay"
|
||||
title="Defines the delay in seconds, until channels are joined after getting connected."
|
||||
value="<? VAR JoinDelay ?>"
|
||||
/> seconds
|
||||
<div class="inputlabel"><? FORMAT "Channel join delay:" ?></div>
|
||||
<? SETBLOCK ChannelJoinDelayInputField ?>
|
||||
<input type="number" name="joindelay" min="0" id="joindelay"
|
||||
title="<? FORMAT "Defines the delay in seconds, until channels are joined after getting connected." ?>"
|
||||
value="<? VAR JoinDelay ?>" />
|
||||
<? ENDSETBLOCK ?>
|
||||
<? FORMAT "{1} seconds" "ChannelJoinDelayInputField ESC=" ?>
|
||||
</div>
|
||||
<script type="text/javascript">floodprotection_change();</script>
|
||||
|
||||
<div style="clear:both;"></div>
|
||||
<div class="subsection" title="Character encoding used between ZNC and IRC server.">
|
||||
<div class="inputlabel">Server encoding:</div>
|
||||
<div class="subsection" title="<? FORMAT "Character encoding used between ZNC and IRC server." ?>">
|
||||
<div class="inputlabel"><? FORMAT "Server encoding:" ?></div>
|
||||
<? INC encoding_settings.tmpl ?>
|
||||
</div>
|
||||
|
||||
@@ -147,25 +161,25 @@
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h3>Channels</h3>
|
||||
<h3><? FORMAT "Channels" ?></h3>
|
||||
<? IF !Edit ?>
|
||||
<span class="info">You will be able to add + modify channels here after you created the network.</span><br />
|
||||
<span class="info"><? FORMAT "You will be able to add + modify channels here after you created the network." ?></span><br />
|
||||
<? ELSE ?>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>addchan?user=<? VAR Username ESC=URL ?>&network=<? VAR Name ESC=URL ?>">Add</a>]</td>
|
||||
<td>[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>addchan?user=<? VAR Username ESC=URL ?>&network=<? VAR Name ESC=URL ?>"><? FORMAT "Add" ?></a>]</td>
|
||||
<? IF ChannelLoop ?>
|
||||
<td>Save</td>
|
||||
<td>Name</td>
|
||||
<td>CurModes</td>
|
||||
<td>DefModes</td>
|
||||
<td>BufferSize</td>
|
||||
<td>Options</td>
|
||||
<td><? FORMAT "Save" ?></td>
|
||||
<td><? FORMAT "Name" ?></td>
|
||||
<td><? FORMAT "CurModes" ?></td>
|
||||
<td><? FORMAT "DefModes" ?></td>
|
||||
<td><? FORMAT "BufferSize" ?></td>
|
||||
<td><? FORMAT "Options" ?></td>
|
||||
<? ELSE ?>
|
||||
<td><- Add a channel (opens in same page)</td>
|
||||
<td><? FORMAT "← Add a channel (opens in same page)" ?></td>
|
||||
<? ENDIF ?>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -175,7 +189,7 @@
|
||||
<tr class="<? IF __EVEN__ ?>evenrow<? ELSE ?>oddrow<? ENDIF ?>">
|
||||
<td>
|
||||
<input type="hidden" name="channel" value="<? VAR Name ?>" />
|
||||
[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>editchan?user=<? VAR Username ESC=URL ?>&network=<? VAR Network ESC=URL ?>&name=<? VAR Name ESC=URL ?>">Edit</a>] [<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>delchan?user=<? VAR Username ESC=URL ?>&network=<? VAR Network ESC=URL ?>&name=<? VAR Name ESC=URL ?>">Del</a>]
|
||||
[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>editchan?user=<? VAR Username ESC=URL ?>&network=<? VAR Network ESC=URL ?>&name=<? VAR Name ESC=URL ?>"><? FORMAT "Edit" ?></a>] [<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>delchan?user=<? VAR Username ESC=URL ?>&network=<? VAR Network ESC=URL ?>&name=<? VAR Name ESC=URL ?>"><? FORMAT "Del" ?></a>]
|
||||
</td>
|
||||
<td><input type="checkbox" name="save_<? VAR Name ?>"<? IF InConfig ?> checked="checked"<? ENDIF ?> /></td>
|
||||
<td><? VAR Name ?></td>
|
||||
@@ -193,17 +207,17 @@
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h3>Modules</h3>
|
||||
<h3><? FORMAT "Modules" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Name</td>
|
||||
<td>Arguments</td>
|
||||
<td>Description</td>
|
||||
<td>Loaded globally</td>
|
||||
<td>Loaded by user</td>
|
||||
<td><? FORMAT "Name" ?></td>
|
||||
<td><? FORMAT "Arguments" ?></td>
|
||||
<td><? FORMAT "Description" ?></td>
|
||||
<td><? FORMAT "Loaded globally" ?></td>
|
||||
<td><? FORMAT "Loaded by user" ?></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -253,15 +267,20 @@
|
||||
<? LOOP EmbeddedModuleLoop ?>
|
||||
<? IF Embed ?>
|
||||
<div class="section">
|
||||
<h3>Module <? VAR ModName ?></h3>
|
||||
<h3><? FORMAT "Module {1}" ModName ?></h3>
|
||||
<? INC *Embed ?>
|
||||
</div>
|
||||
<? ENDIF ?>
|
||||
<? ENDLOOP ?>
|
||||
|
||||
<div class="submitline">
|
||||
<input type="submit" name="submit_return" value="<? IF Edit ?>Save<? ELSE ?>Add Network<? ENDIF ?> and return" />
|
||||
<input type="submit" name="submit_continue" value="<? IF Edit ?>Save<? ELSE ?>Add Network<? ENDIF ?> and continue" />
|
||||
<? IF Edit ?>
|
||||
<input type="submit" name="submit_return" value="<? FORMAT "Save and return" ?>"/>
|
||||
<input type="submit" name="submit_continue" value="<? FORMAT "Save and continue" ?>"/>
|
||||
<? ELSE ?>
|
||||
<input type="submit" name="submit_return" value="<? FORMAT "Add Network and return" ?>"/>
|
||||
<input type="submit" name="submit_continue" value="<? FORMAT "Add Network and continue" ?>"/>
|
||||
<? ENDIF ?>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<? I18N znc-webadmin ?>
|
||||
<? AddRow JSLoop HREF=/modfiles/global/webadmin/webadmin.js ?>
|
||||
<? AddRow CSSLoop HREF=/modfiles/global/webadmin/webadmin.css ?>
|
||||
<? INC Header.tmpl ?>
|
||||
@@ -11,11 +12,11 @@
|
||||
<input name="userdummy" type="text" style="display: none"/>
|
||||
<input name="passworddummy" type="password" style="display: none"/>
|
||||
|
||||
<h3>Authentication</h3>
|
||||
<h3><? FORMAT "Authentication" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Username:</div>
|
||||
<div class="inputlabel"><? FORMAT "Username:" ?></div>
|
||||
|
||||
<? IF Clone ?>
|
||||
<input type="hidden" name="clone" value="<? VAR CloneUsername ?>" />
|
||||
@@ -25,27 +26,26 @@
|
||||
<input type="text" name="newuser" value="<? VAR Username ?>" class="half" maxlength="128" disabled="disabled" />
|
||||
<? ELSE ?>
|
||||
<input type="text" name="user" value="<? VAR Username ?>" class="half" maxlength="128"
|
||||
title="Please enter a username." />
|
||||
title="<? FORMAT "Please enter a username." ?>"/>
|
||||
<? ENDIF ?>
|
||||
|
||||
</div>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Password:</div>
|
||||
<div class="inputlabel"><? FORMAT "Password:" ?></div>
|
||||
<input type="password" name="password" class="half"
|
||||
title="Please enter a password." autocomplete="off" />
|
||||
title="<? FORMAT "Please enter a password." ?>" autocomplete="off" />
|
||||
</div>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Confirm password:</div>
|
||||
<div class="inputlabel"><? FORMAT "Confirm password:" ?></div>
|
||||
<input type="password" name="password2" class="half"
|
||||
title="Please re-type the above password." />
|
||||
title="<? FORMAT "Please re-type the above password." ?>"/>
|
||||
</div>
|
||||
<div class="subsection half">
|
||||
<div class="inputlabel">Allowed IPs:</div>
|
||||
<div class="inputlabel"><? FORMAT "Allowed IPs:" ?></div>
|
||||
<textarea name="allowedips" cols="70" rows="5"><? LOOP AllowedHostLoop ?><? VAR Host ?>
|
||||
<? ENDLOOP ?>
|
||||
</textarea>
|
||||
<br /><span class="info">Leave empty to allow connections from all IPs.<br />
|
||||
Otherwise, one entry per line, wildcards * and ? are available.</span>
|
||||
<br /><span class="info"><? FORMAT "Leave empty to allow connections from all IPs.<br/>Otherwise, one entry per line, wildcards * and ? are available." ?></span>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
@@ -53,59 +53,59 @@
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h3>IRC Information</h3>
|
||||
<h3><? FORMAT "IRC Information" ?></h3>
|
||||
<? IF !Edit ?>
|
||||
<span class="info">Nick, AltNick, Ident, RealName and QuitMsg can be left empty to use default values.</span>
|
||||
<span class="info"><? FORMAT "Nick, AltNick, Ident, RealName and QuitMsg can be left empty to use default values." ?></span>
|
||||
<? ENDIF ?>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Nickname:</div>
|
||||
<div class="inputlabel"><? FORMAT "Nickname:" ?></div>
|
||||
<input type="text" name="nick" value="<? VAR Nick ?>" class="half" maxlength="128"
|
||||
title="This will be your nickname on IRC." />
|
||||
title="<? FORMAT "Your nickname on IRC." ?>"/>
|
||||
</div>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Alt. Nickname:</div>
|
||||
<div class="inputlabel"><? FORMAT "Alt. Nickname:" ?></div>
|
||||
<input type="text" name="altnick" value="<? VAR AltNick ?>" class="half" maxlength="128"
|
||||
title="If the nickname above is not available anymore, then this will be your nickname on IRC." />
|
||||
title="<? FORMAT "Your secondary nickname, if the first is not available on IRC." ?>"/>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Ident:</div>
|
||||
<div class="inputlabel"><? FORMAT "Ident:" ?></div>
|
||||
<input type="text" name="ident" value="<? VAR Ident ?>" class="half" maxlength="128"
|
||||
title="The Ident identifies you as one specific user of your host." />
|
||||
title="<? FORMAT "The Ident is sent to server as username." ?>"/>
|
||||
</div>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">StatusPrefix:</div>
|
||||
<div class="inputlabel"><? FORMAT "Status Prefix:" ?></div>
|
||||
<input type="text" name="statusprefix" value="<? VAR StatusPrefix ?>" class="half" maxlength="5"
|
||||
title="This defines the prefix for the status and module queries." />
|
||||
title="<? FORMAT "The prefix for the status and module queries." ?>"/>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Realname:</div>
|
||||
<div class="inputlabel"><? FORMAT "Realname:" ?></div>
|
||||
<input type="text" name="realname" value="<? VAR RealName ?>" class="full" maxlength="256"
|
||||
title="The real name of the user." />
|
||||
title="<? FORMAT "Your real name." ?>"/>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
<? IF BindHostEdit ?>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">BindHost:</div>
|
||||
<div class="inputlabel"><? FORMAT "BindHost:" ?></div>
|
||||
<input type="text" name="bindhost" value="<? VAR BindHost ?>"/>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">DCCBindHost:</div>
|
||||
<div class="inputlabel"><? FORMAT "DCCBindHost:" ?></div>
|
||||
<input type="text" name="dccbindhost" value="<? VAR DCCBindHost ?>"/>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
<? ENDIF ?>
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Quit Message:</div>
|
||||
<div class="inputlabel"><? FORMAT "Quit Message:" ?></div>
|
||||
<input type="text" name="quitmsg" value="<? VAR QuitMsg ?>" class="full" maxlength="256"
|
||||
title="You may define a Message shown, when you quit IRC." />
|
||||
title="<? FORMAT "You may define a Message shown, when you quit IRC." ?>"/>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
@@ -113,21 +113,21 @@
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h3>Networks</h3>
|
||||
<h3><? FORMAT "Networks" ?></h3>
|
||||
<? IF Edit ?>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<table class="sortable">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="ignore-sort">[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>addnetwork?user=<? VAR Username ESC=URL ?>">Add</a>]</td>
|
||||
<td class="ignore-sort">[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>addnetwork?user=<? VAR Username ESC=URL ?>"><? FORMAT "Add" ?></a>]</td>
|
||||
<? IF NetworkLoop ?>
|
||||
<td>Name</td>
|
||||
<td>Clients</td>
|
||||
<td>Current Server</td>
|
||||
<td>IRC Nick</td>
|
||||
<td><? FORMAT "Name" ?></td>
|
||||
<td><? FORMAT "Clients" ?></td>
|
||||
<td><? FORMAT "Current Server" ?></td>
|
||||
<td><? FORMAT "Nick" ?></td>
|
||||
<? ELSE ?>
|
||||
<td><- Add a network (opens in same page)</td>
|
||||
<td><? FORMAT "← Add a network (opens in same page)" ?></td>
|
||||
<? ENDIF ?>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -137,7 +137,7 @@
|
||||
<tr class="<? IF __EVEN__ ?>evenrow<? ELSE ?>oddrow<? ENDIF ?>">
|
||||
<td>
|
||||
<input type="hidden" name="network" value="<? VAR Name ?>" />
|
||||
[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>editnetwork?user=<? VAR Username ESC=URL ?>&network=<? VAR Name ESC=URL ?>">Edit</a>] [<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>delnetwork?user=<? VAR Username ESC=URL ?>&name=<? VAR Name ESC=URL ?>">Del</a>]
|
||||
[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>editnetwork?user=<? VAR Username ESC=URL ?>&network=<? VAR Name ESC=URL ?>"><? FORMAT "Edit" ?></a>] [<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>delnetwork?user=<? VAR Username ESC=URL ?>&name=<? VAR Name ESC=URL ?>"><? FORMAT "Del" ?></a>]
|
||||
</td>
|
||||
<td><? VAR Name ?></td>
|
||||
<td><? VAR Clients ?></td>
|
||||
@@ -150,22 +150,26 @@
|
||||
</div>
|
||||
</div>
|
||||
<? ELSE ?>
|
||||
<span class="info">You will be able to add + modify networks here after you <? IF Clone ?>have cloned<? ELSE ?>created<? ENDIF ?> the user.</span><br />
|
||||
<? IF Clone ?>
|
||||
<span class="info"><? FORMAT "You will be able to add + modify networks here after you have cloned the user." ?></span><br />
|
||||
<? ELSE ?>
|
||||
<span class="info"><? FORMAT "You will be able to add + modify networks here after you have created the user." ?></span><br />
|
||||
<? ENDIF ?>
|
||||
<? ENDIF ?>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h3>Modules</h3>
|
||||
<h3><? FORMAT "Modules" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Name</td>
|
||||
<td>Arguments</td>
|
||||
<td>Description</td>
|
||||
<td>Loaded globally</td>
|
||||
<td>Loaded by networks</td>
|
||||
<td><? FORMAT "Name" ?></td>
|
||||
<td><? FORMAT "Arguments" ?></td>
|
||||
<td><? FORMAT "Description" ?></td>
|
||||
<td><? FORMAT "Loaded globally" ?></td>
|
||||
<td><? FORMAT "Loaded by networks" ?></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -218,46 +222,46 @@
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h3>Channels</h3>
|
||||
<h3><? FORMAT "Channels" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<div class="subsection third">
|
||||
<div class="inputlabel">Default Modes:</div>
|
||||
<div class="inputlabel"><? FORMAT "Default Modes:" ?></div>
|
||||
<input type="text" name="chanmodes" value="<? VAR DefaultChanModes ?>" maxlength="32"
|
||||
title="These are the default modes ZNC will set when you join an empty channel." />
|
||||
<br /><span class="info">Empty = use standard value</span>
|
||||
title="<? FORMAT "These are the default modes ZNC will set when you join an empty channel." ?>"/>
|
||||
<br /><span class="info"><? FORMAT "Empty = use standard value" ?></span>
|
||||
</div>
|
||||
<div class="subsection third">
|
||||
<div class="inputlabel">Buffer Size:</div>
|
||||
<div class="inputlabel"><? FORMAT "Buffer Size:" ?></div>
|
||||
<input type="number" name="chanbufsize" value="<? VAR ChanBufferSize ?>" min="0"
|
||||
title="This is the amount of lines that the playback buffer will store for channels before dropping off the oldest line. The buffers are stored in the memory by default." />
|
||||
<br /><span class="info">Empty = use standard value</span>
|
||||
title="<? FORMAT "This is the amount of lines that the playback buffer will store for channels before dropping off the oldest line. The buffers are stored in the memory by default." ?>"/>
|
||||
<br /><span class="info"><? FORMAT "Empty = use standard value" ?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h3>Queries</h3>
|
||||
<h3><? FORMAT "Queries" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<div class="subsection third">
|
||||
<div class="inputlabel">Max Buffers:</div>
|
||||
<div class="inputlabel"><? FORMAT "Max Buffers:" ?></div>
|
||||
<input type="number" name="maxquerybuffers" value="<? VAR MaxQueryBuffers ?>" class="third" min="0"
|
||||
title="Maximum number of query buffers. 0 is unlimited."/>
|
||||
title="<? FORMAT "Maximum number of query buffers. 0 is unlimited." ?>"/>
|
||||
</div>
|
||||
<div class="subsection third">
|
||||
<div class="inputlabel">Buffer Size:</div>
|
||||
<div class="inputlabel"><? FORMAT "Buffer Size:" ?></div>
|
||||
<input type="number" name="querybufsize" value="<? VAR QueryBufferSize ?>" min="0"
|
||||
title="This is the amount of lines that the playback buffer will store for queries before dropping off the oldest line. The buffers are stored in the memory by default." />
|
||||
<br /><span class="info">Empty = use standard value</span>
|
||||
title="<? FORMAT "This is the amount of lines that the playback buffer will store for queries before dropping off the oldest line. The buffers are stored in the memory by default." ?>"/>
|
||||
<br /><span class="info"><? FORMAT "Empty = use standard value" ?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h3>Flags</h3>
|
||||
<h3><? FORMAT "Flags" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody lotsofcheckboxes">
|
||||
<? LOOP OptionLoop ?>
|
||||
@@ -272,20 +276,20 @@
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h3>ZNC Behavior</h3>
|
||||
<span class="info">Any of the following text boxes can be left empty to use their default value.</span>
|
||||
<h3><? FORMAT "ZNC Behavior" ?></h3>
|
||||
<span class="info"><? FORMAT "Any of the following text boxes can be left empty to use their default value." ?></span>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Timestamp Format:</div>
|
||||
<div class="inputlabel"><? FORMAT "Timestamp Format:" ?></div>
|
||||
<input type="text" name="timestampformat" value="<? VAR TimestampFormat ?>" class="full"
|
||||
title="The format for the timestamps used in buffers, for example [%H:%M:%S]. This setting is ignored in new IRC clients, which use server-time. If your client supports server-time, change timestamp format in client settings instead." />
|
||||
title="<? FORMAT "The format for the timestamps used in buffers, for example [%H:%M:%S]. This setting is ignored in new IRC clients, which use server-time. If your client supports server-time, change timestamp format in client settings instead." ?>"/>
|
||||
</div>
|
||||
<div class="subsection half">
|
||||
<div class="inputlabel">Timezone:</div>
|
||||
<div class="inputlabel"><? FORMAT "Timezone:" ?></div>
|
||||
<input type="text" name="timezone" value="<? VAR Timezone ?>" list="timezone_list"
|
||||
title="Select your timezone." />
|
||||
<br /><span class="info">E.g. <code>Europe/Berlin</code>, or <code>GMT-6</code></span>
|
||||
<br /><span class="info"><? FORMAT "E.g. <code>Europe/Berlin</code>, or <code>GMT-6</code>" ?></span>
|
||||
<datalist id="timezone_list">
|
||||
<? LOOP TZLoop ?>
|
||||
<option value="<? VAR TZ ?>"/>
|
||||
@@ -293,50 +297,51 @@
|
||||
</datalist>
|
||||
</div>
|
||||
<div style="clear:both;"></div>
|
||||
<div class="subsection" title="Character encoding used between IRC client and ZNC.">
|
||||
<div class="inputlabel">Client encoding:</div>
|
||||
<div class="subsection" title="<? FORMAT "Character encoding used between IRC client and ZNC." ?>">
|
||||
<div class="inputlabel"><? FORMAT "Client encoding:" ?></div>
|
||||
<? INC encoding_settings.tmpl ?>
|
||||
</div>
|
||||
<div style="clear:both;"></div>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Join Tries:</div>
|
||||
<div class="inputlabel"><? FORMAT "Join Tries:" ?></div>
|
||||
<input type="number" name="jointries" value="<? VAR JoinTries ?>" class="third" min="0"
|
||||
title="This defines how often ZNC tries to join, if the first join failed, e.g. due to channel mode +i/+k or if you're banned." />
|
||||
title="<? FORMAT "This defines how many times ZNC tries to join a channel, if the first join failed, e.g. due to channel mode +i/+k or if you are banned." ?>"/>
|
||||
</div>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Max Joins:</div>
|
||||
<div class="inputlabel"><? FORMAT "Join speed:" ?></div>
|
||||
<input type="number" name="maxjoins" value="<? VAR MaxJoins ?>" class="third" min="0"
|
||||
title="How many channels are joined in one JOIN command. 0 is unlimited (default). Set to small positive value if you get disconnected with `Max SendQ Exceeded'"/>
|
||||
title="<? FORMAT "How many channels are joined in one JOIN command. 0 is unlimited (default). Set to small positive value if you get disconnected with “Max SendQ Exceeded”" ?>"/>
|
||||
</div>
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Max IRC Networks Number:</div>
|
||||
<div class="inputlabel"><? FORMAT "Max IRC Networks Number:" ?></div>
|
||||
<input type="number" name="maxnetworks" value="<? VAR MaxNetworks ?>" class="third" min="0"
|
||||
title="Maximum number of IRC networks allowed for this user." <? IF !ImAdmin ?>disabled="disabled"<? ENDIF ?> />
|
||||
title="<? FORMAT "Maximum number of IRC networks allowed for this user." ?>" <? IF !ImAdmin ?>disabled="disabled"<? ENDIF ?> />
|
||||
</div>
|
||||
|
||||
<? SETBLOCK Substitutions_Link ?><a href="http://wiki.znc.in/ExpandString" target="_blank" class="external"><? FORMAT "Substitutions" ?></a><? ENDSETBLOCK ?>
|
||||
<div class="subsection half" id="ctcpreplies_plain">
|
||||
<div class="inputlabel">CTCP Replies:</div>
|
||||
<div class="inputlabel"><? FORMAT "CTCP Replies:" ?></div>
|
||||
<div><textarea name="ctcpreplies" cols="70" rows="3" id="ctcpreplies_text"><? LOOP CTCPLoop ?><? VAR CTCP ?>
|
||||
<? ENDLOOP ?>
|
||||
</textarea></div>
|
||||
<br /><span class="info">One reply per line. Example: TIME Buy a watch!</span>
|
||||
<br /><span class="info"><a href="http://wiki.znc.in/ExpandString" target="_blank" class="external">Substitutions</a> are available</span>
|
||||
<br /><span class="info"><? FORMAT "One reply per line. Example: <code>TIME Buy a watch!</code>" ?></span>
|
||||
<br /><span class="info"><? FORMAT "{1} are available" "Substitutions_Link ESC=" ?></span>
|
||||
</div>
|
||||
<div class="subsection" id="ctcpreplies_js" style="display:none">
|
||||
<div class="inputlabel">CTCP Replies:</div>
|
||||
<div class="inputlabel"><? FORMAT "CTCP Replies:" ?></div>
|
||||
<div>
|
||||
<table style="width:100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Request</th>
|
||||
<th>Response</th>
|
||||
<th><? FORMAT "Request" ?></th>
|
||||
<th><? FORMAT "Response" ?></th>
|
||||
<th/>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="ctcpreplies_tbody"/>
|
||||
</table>
|
||||
<input type="button" value="Add" id="ctcpreplies_add"/>
|
||||
<span class="info"><a href="http://wiki.znc.in/ExpandString" target="_blank" class="external">Substitutions</a> are available</span>
|
||||
<span class="info"><? FORMAT "{1} are available" "Substitutions_Link ESC=" ?></span>
|
||||
<datalist id="ctcpreplies_list">
|
||||
<option value="PING"/>
|
||||
<option value="FINGER"/>
|
||||
@@ -354,23 +359,23 @@
|
||||
<script type="text/javascript">ctcpreplies_init(jQuery);</script>
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Skin:</div>
|
||||
<div class="inputlabel"><? FORMAT "Skin:" ?></div>
|
||||
|
||||
<? IF SkinLoop ROWS > 1 ?>
|
||||
<select name="skin">
|
||||
<option value="">- Global -</option>
|
||||
<option value=""><? FORMAT "- Global -" ?></option>
|
||||
<? LOOP SkinLoop ?>
|
||||
<option value="<? VAR Name ?>"<? IF Checked ?> selected="selected"<? ENDIF ?>><? IF Name == "_default_" ?>Default<? ELSE ?><? VAR Name ?><? ENDIF ?></option>
|
||||
<option value="<? VAR Name ?>"<? IF Checked ?> selected="selected"<? ENDIF ?>><? IF Name == "_default_" ?><? FORMAT "Default" ?><? ELSE ?><? VAR Name ?><? ENDIF ?></option>
|
||||
<? ENDLOOP ?>
|
||||
</select>
|
||||
<? ELSE ?>
|
||||
No other skins found
|
||||
<? FORMAT "No other skins found" ?>
|
||||
<? ENDIF ?>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Language:</div>
|
||||
<div class="inputlabel"><? FORMAT "Language:" ?></div>
|
||||
|
||||
<? IF HaveI18N ?>
|
||||
<select name="language">
|
||||
@@ -391,7 +396,7 @@
|
||||
<? LOOP EmbeddedModuleLoop ?>
|
||||
<? IF Embed ?>
|
||||
<div class="section">
|
||||
<h3>Module <? VAR ModName ?></h3>
|
||||
<h3><? FORMAT "Module {1}" ModName ?></h3>
|
||||
<? INC *Embed ?>
|
||||
</div>
|
||||
<? ENDIF ?>
|
||||
@@ -399,10 +404,24 @@
|
||||
|
||||
<div class="submitline">
|
||||
<? IF ImAdmin ?>
|
||||
<input type="submit" name="submit_return" value="<? IF Edit ?>Save<? ELSE ?><? IF Clone ?>Clone<? ELSE ?>Create<? ENDIF ?><? ENDIF ?> and return" />
|
||||
<input type="submit" name="submit_continue" value="<? IF Edit ?>Save<? ELSE ?><? IF Clone ?>Clone<? ELSE ?>Create<? ENDIF ?><? ENDIF ?> and continue" />
|
||||
<? IF Edit ?>
|
||||
<input type="submit" name="submit_return" value="<? FORMAT "Save and return" ?>"/>
|
||||
<input type="submit" name="submit_continue" value="<? FORMAT "Save and continue" ?>"/>
|
||||
<? ELSE IF Clone ?>
|
||||
<input type="submit" name="submit_return" value="<? FORMAT "Clone and return" ?>"/>
|
||||
<input type="submit" name="submit_continue" value="<? FORMAT "Clone and continue" ?>"/>
|
||||
<? ELSE ?>
|
||||
<input type="submit" name="submit_return" value="<? FORMAT "Create and return" ?>"/>
|
||||
<input type="submit" name="submit_continue" value="<? FORMAT "Create and continue" ?>"/>
|
||||
<? ENDIF ?>
|
||||
<? ELSE ?>
|
||||
<input type="submit" value="<? IF Edit ?>Save<? ELSE ?><? IF Clone ?>Clone<? ELSE ?>Create<? ENDIF ?><? ENDIF ?>" />
|
||||
<? IF Edit ?>
|
||||
<input type="submit" value="<? FORMAT "Save" ?>"/>
|
||||
<? ELSE IF Clone ?>
|
||||
<input type="submit" value="<? FORMAT "Clone" ?>"/>
|
||||
<? ELSE ?>
|
||||
<input type="submit" value="<? FORMAT "Create" ?>"/>
|
||||
<? ENDIF ?>
|
||||
<? ENDIF ?>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
<? I18N znc-webadmin ?>
|
||||
<? INC Header.tmpl ?>
|
||||
|
||||
<div class="section">
|
||||
<h3>Confirm Network Deletion</h3>
|
||||
<h3><? FORMAT "Confirm Network Deletion" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<div class="subsection">
|
||||
Are you sure you want to delete "<? VAR Username ?>/<? VAR Network ?>"?
|
||||
<? FORMAT "Are you sure you want to delete network “{2}” of user “{1}”?" Username Network ?>
|
||||
<form action="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>delnetwork" method="post">
|
||||
<? INC _csrf_check.tmpl ?>
|
||||
<input type="hidden" name="user" value="<? VAR Username ?>" />
|
||||
<input type="hidden" name="name" value="<? VAR Network ?>" />
|
||||
<div class="yesnobutton"><input type="submit" value="Yes" /></div>
|
||||
<div class="yesnobutton"><input type="submit" value="<? FORMAT "Yes" ?>"/></div>
|
||||
</form>
|
||||
<form action="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>listusers" method="get">
|
||||
<div class="yesnobutton"><input type="submit" value="No" /></div>
|
||||
<div class="yesnobutton"><input type="submit" value="<? FORMAT "No" ?>"/></div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
<? I18N znc-webadmin ?>
|
||||
<? INC Header.tmpl ?>
|
||||
|
||||
<div class="section">
|
||||
<h3>Confirm User Deletion</h3>
|
||||
<h3><? FORMAT "Confirm User Deletion" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<div class="subsection">
|
||||
Are you sure you want to delete "<? VAR Username ?>"?
|
||||
<? FORMAT "Are you sure you want to delete user “{1}”?" Username ?>
|
||||
<form action="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>deluser" method="post">
|
||||
<? INC _csrf_check.tmpl ?>
|
||||
<input type="hidden" name="submitted" value="1" />
|
||||
<input type="hidden" name="user" value="<? VAR Username ?>" />
|
||||
<div class="yesnobutton"><input type="submit" value="Yes" /></div>
|
||||
<div class="yesnobutton"><input type="submit" value="<? FORMAT "Yes" ?>"/></div>
|
||||
</form>
|
||||
<form action="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>listusers" method="get">
|
||||
<div class="yesnobutton"><input type="submit" value="No" /></div>
|
||||
<div class="yesnobutton"><input type="submit" value="<? FORMAT "No" ?>"/></div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,36 +1,39 @@
|
||||
<? I18N znc-webadmin ?>
|
||||
<div class="encoding-settings">
|
||||
<? IF EncodingDisabled ?>
|
||||
<div>
|
||||
ZNC is compiled without encodings support. <a href="http://icu-project.org/">ICU</a> is required for it.
|
||||
<? SETBLOCK Encoding_ICULink ?><a href="http://icu-project.org/">ICU</a><? ENDSETBLOCK ?>
|
||||
<? FORMAT "ZNC is compiled without encodings support. {1} is required for it." "Encoding_ICULink ESC=" ?>
|
||||
</div>
|
||||
<? ELSE ?><?IF LegacyEncodingDisabled ?>
|
||||
<div>
|
||||
<!-- TODO don't hardcode modpython here -->
|
||||
Legacy mode is disabled by modpython.
|
||||
<? FORMAT "Legacy mode is disabled by modpython." ?>
|
||||
</div>
|
||||
<? ENDIF ?><? ENDIF ?>
|
||||
<div>
|
||||
<? SETBLOCK Encoding_Placeholder ?><span class="encoding-placeholder-big"> <span class="encoding-placeholder"></span> </span><? ENDSETBLOCK ?>
|
||||
<div class="checkboxandlabel checkbox">
|
||||
<input type="radio" name="encoding_utf" id="encoding_utf_legacy" value="legacy" <? IF EncodingUtf == "legacy" ?>checked="checked"<? ENDIF ?> <? IF LegacyEncodingDisabled ?>disabled="disabled"<? ENDIF ?> />
|
||||
<label for="encoding_utf_legacy">Don't ensure any encoding at all (legacy mode, not recommended)</label>
|
||||
<label for="encoding_utf_legacy"><? FORMAT "Don't ensure any encoding at all (legacy mode, not recommended)" ?></label>
|
||||
</div>
|
||||
<div class="checkboxandlabel checkbox">
|
||||
<input type="radio" name="encoding_utf" id="encoding_utf_send" value="send" <? IF EncodingUtf == "send" ?>checked="checked"<? ENDIF ?> <? IF EncodingDisabled ?>disabled="disabled"<? ENDIF ?> />
|
||||
<label for="encoding_utf_send">Try to parse as UTF-8 and as <span class="encoding-placeholder-big"> <span class="encoding-placeholder"></span> </span>, send as UTF-8 (recommended)</label>
|
||||
<label for="encoding_utf_send"><? FORMAT "Try to parse as UTF-8 and as {1}, send as UTF-8 (recommended)" "Encoding_Placeholder ESC=" ?></label>
|
||||
</div>
|
||||
<div class="checkboxandlabel checkbox">
|
||||
<input type="radio" name="encoding_utf" id="encoding_utf_receive" value="receive" <? IF EncodingUtf == "receive" ?>checked="checked"<? ENDIF ?> <? IF EncodingDisabled ?>disabled="disabled"<? ENDIF ?> />
|
||||
<label for="encoding_utf_receive">Try to parse as UTF-8 and as <span class="encoding-placeholder-big"> <span class="encoding-placeholder"></span> </span>, send as <span class="encoding-placeholder-big"> <span class="encoding-placeholder"></span > </span></label>
|
||||
<label for="encoding_utf_receive"><? FORMAT "Try to parse as UTF-8 and as {1}, send as {1}" "Encoding_Placeholder ESC=" ?></label>
|
||||
</div>
|
||||
<div class="checkboxandlabel checkbox">
|
||||
<input type="radio" name="encoding_utf" id="encoding_utf_simple" value="simple" <? IF EncodingUtf == "simple" ?>checked="checked"<? ENDIF ?> <? IF EncodingDisabled ?>disabled="disabled"<? ENDIF ?> />
|
||||
<label for="encoding_utf_simple">Parse and send as <span class="encoding-placeholder-big"> <span class="encoding-placeholder"></span> </span> only</label>
|
||||
<label for="encoding_utf_simple"><? FORMAT "Parse and send as {1} only" "Encoding_Placeholder ESC=" ?></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="half">
|
||||
<input type="text" name="encoding" value="<? VAR Encoding ?>" list="encoding_list"
|
||||
<? IF EncodingDisabled ?>disabled="disabled"<? ENDIF ?> />
|
||||
<br /><div class="third"><span class="info">E.g. <code>UTF-8</code>, or <code>ISO-8859-15</code></span></div>
|
||||
<br /><div class="third"><span class="info"><? FORMAT "E.g. <code>UTF-8</code>, or <code>ISO-8859-15</code>" ?></span></div>
|
||||
<script type="text/javascript">
|
||||
function updateEncodingText() {
|
||||
var value = jQuery("input[name=encoding]").val();
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<? I18N znc-webadmin ?>
|
||||
<? INC Header.tmpl ?>
|
||||
|
||||
<div class="textsection">
|
||||
<p>Welcome to the ZNC webadmin module.<br/>
|
||||
All changes you make will be in effect immediately after you submitted them.</p>
|
||||
<p><? FORMAT "Welcome to the ZNC webadmin module." ?><br/>
|
||||
<? FORMAT "All changes you make will be in effect immediately after you submitted them." ?></p>
|
||||
</div>
|
||||
|
||||
<? INC Footer.tmpl ?>
|
||||
<? INC Footer.tmpl ?>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<? I18N znc-webadmin ?>
|
||||
<? AddRow JSLoop HREF=/modfiles/global/webadmin/webadmin.js ?>
|
||||
<? AddRow CSSLoop HREF=/modfiles/global/webadmin/webadmin.css ?>
|
||||
<? INC Header.tmpl ?>
|
||||
@@ -11,10 +12,10 @@
|
||||
<table class="sortable">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="ignore-sort">[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>adduser">Add</a>]</td>
|
||||
<td>Username</td>
|
||||
<td>Networks</td>
|
||||
<td>Clients</td>
|
||||
<td class="ignore-sort">[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>adduser"><? FORMAT "Add" ?></a>]</td>
|
||||
<td><? FORMAT "Username" ?></td>
|
||||
<td><? FORMAT "Networks" ?></td>
|
||||
<td><? FORMAT "Clients" ?></td>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
@@ -23,9 +24,9 @@
|
||||
<tr class="<?IF __EVEN__?>evenrow<?ELSE?>oddrow<?ENDIF?>">
|
||||
<td>
|
||||
<span class="nowrap">
|
||||
[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>edituser?user=<?VAR Username ESC=URL?>">Edit</a>]
|
||||
[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>adduser?clone=<? VAR Username ESC=URL ?>" alt="Clone <? VAR Username ESC=URL ?>">Clone</a>]
|
||||
<? IF !IsSelf ?>[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>deluser?user=<?VAR Username ESC=URL?>">Delete</a>]<? ENDIF ?>
|
||||
[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>edituser?user=<?VAR Username ESC=URL?>"><? FORMAT "Edit" ?></a>]
|
||||
[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>adduser?clone=<? VAR Username ESC=URL ?>" alt="Clone <? VAR Username ESC=URL ?>"><? FORMAT "Clone" ?></a>]
|
||||
<? IF !IsSelf ?>[<a href="<? VAR URIPrefix TOP ?><? VAR ModPath TOP ?>deluser?user=<?VAR Username ESC=URL?>"><? FORMAT "Delete" ?></a>]<? ENDIF ?>
|
||||
</span>
|
||||
</td>
|
||||
<td><? VAR Username ?></td>
|
||||
|
||||
@@ -1,23 +1,24 @@
|
||||
<? I18N znc-webadmin ?>
|
||||
<? INC Header.tmpl ?>
|
||||
|
||||
<div class="section">
|
||||
|
||||
<h3>Listen Port(s)</h3>
|
||||
<h3><? FORMAT "Listen Port(s)" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<div class="subsection">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Port</td>
|
||||
<td>BindHost</td>
|
||||
<td>SSL</td>
|
||||
<td>IPv4</td>
|
||||
<td>IPv6</td>
|
||||
<td>IRC</td>
|
||||
<td>Web</td>
|
||||
<td>URIPrefix</td>
|
||||
<td>Delete</td>
|
||||
<td><? FORMAT "Port" ?></td>
|
||||
<td><? FORMAT "BindHost" ?></td>
|
||||
<td><? FORMAT "SSL" ?></td>
|
||||
<td><? FORMAT "IPv4" ?></td>
|
||||
<td><? FORMAT "IPv6" ?></td>
|
||||
<td><? FORMAT "IRC" ?></td>
|
||||
<td><? FORMAT "HTTP" ?></td>
|
||||
<td><? FORMAT "URIPrefix" ?></td>
|
||||
<td><? FORMAT "Delete" ?></td>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
@@ -38,7 +39,7 @@
|
||||
<div class="checkbox"><input type="checkbox" disabled="disabled" <? IF IsIRC ?>checked="checked"<? ENDIF ?>/></div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="checkbox"><input type="checkbox" disabled="disabled" <? IF IsWeb ?>checked="checked"<? ENDIF ?>/></div>
|
||||
<div class="checkbox"><input type="checkbox" disabled="disabled" <? IF IsHTTP ?>checked="checked"<? ENDIF ?>/></div>
|
||||
</td>
|
||||
<td><? VAR URIPrefix ?></td>
|
||||
<td>
|
||||
@@ -49,10 +50,10 @@
|
||||
<input name="port" type="hidden" value="<? VAR Port ?>"/>
|
||||
<input name="ipv4" type="hidden" value="<? VAR IsIPV4 ?>"/>
|
||||
<input name="ipv6" type="hidden" value="<? VAR IsIPV6 ?>"/>
|
||||
<input type="submit" value="Del"/>
|
||||
<input type="submit" value="<? FORMAT "Del" ?>"/>
|
||||
</form>
|
||||
<? ELSE ?>
|
||||
<input type="button" disabled="disabled" title="To delete port which you use to access webadmin itself, either connect to webadmin via another port, or do it in IRC (/znc DelPort)" value="Current"/>
|
||||
<input type="button" disabled="disabled" title="<? FORMAT "To delete port which you use to access webadmin itself, either connect to webadmin via another port, or do it in IRC (/znc DelPort)" ?>" value="<? FORMAT "Current" ?>"/>
|
||||
<? ENDIF ?>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -68,7 +69,7 @@
|
||||
<td><div class="checkbox"><input name="irc" type="checkbox" checked="checked"/></div></td>
|
||||
<td><div class="checkbox"><input name="web" type="checkbox" checked="checked"/></div></td>
|
||||
<td><input name="uriprefix" type="text" value="/" class="sixth"/></td>
|
||||
<td><input type="submit" value="Add"/></td>
|
||||
<td><input type="submit" value="<? FORMAT "Add" ?>"/></td>
|
||||
</form>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -82,15 +83,15 @@
|
||||
<input type="hidden" name="submitted" value="1" />
|
||||
|
||||
<div class="section">
|
||||
<h3>Settings</h3>
|
||||
<h3><? FORMAT "Settings" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Skin:</div>
|
||||
<div class="inputlabel"><? FORMAT "Skin:" ?></div>
|
||||
|
||||
<select name="skin">
|
||||
<? LOOP SkinLoop ?>
|
||||
<option value="<? VAR Name ?>"<? IF Checked ?> selected="selected"<? ENDIF ?>><? IF Name == "_default_" ?>Default<? ELSE ?><? VAR Name ?><? ENDIF ?></option>
|
||||
<option value="<? VAR Name ?>"<? IF Checked ?> selected="selected"<? ENDIF ?>><? IF Name == "_default_" ?><? FORMAT "Default" ?><? ELSE ?><? VAR Name ?><? ENDIF ?></option>
|
||||
<? ENDLOOP ?>
|
||||
</select>
|
||||
|
||||
@@ -98,61 +99,61 @@
|
||||
|
||||
|
||||
<div class="subsection third">
|
||||
<div class="inputlabel">Status Prefix:</div>
|
||||
<div class="inputlabel"><? FORMAT "Status Prefix:" ?></div>
|
||||
<input type="text" name="statusprefix" value="<? VAR StatusPrefix ?>"
|
||||
title="The prefix for the status and module queries."/>
|
||||
<br /><span class="info">Default for new users only.</span>
|
||||
title="<? FORMAT "The prefix for the status and module queries." ?>"/>
|
||||
<br /><span class="info"><? FORMAT "Default for new users only." ?></span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="subsection half">
|
||||
<div class="inputlabel">Maximum Buffer Size:</div>
|
||||
<input type="text" name="maxbufsize" value="<? VAR MaxBufferSize ?>"
|
||||
title="Sets the global Max Buffer Size a user can have."/>
|
||||
<div class="inputlabel"><? FORMAT "Maximum Buffer Size:" ?></div>
|
||||
<input type="number" name="maxbufsize" value="<? VAR MaxBufferSize ?>"
|
||||
title="<? FORMAT "Sets the global Max Buffer Size a user can have." ?>"/>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="subsection half">
|
||||
<div class="inputlabel">Connect Delay:</div>
|
||||
<input type="text" name="connectdelay" value="<? VAR ConnectDelay ?>"
|
||||
title="The time every connection will be delayed, in seconds. Some servers refuse your connection if you reconnect too fast. This affects the connection between ZNC and the IRC server; not the connection between your IRC client and ZNC. "/>
|
||||
<div class="inputlabel"><? FORMAT "Connect Delay:" ?></div>
|
||||
<input type="number" name="connectdelay" value="<? VAR ConnectDelay ?>"
|
||||
title="<? FORMAT "The time between connection attempts to IRC servers, in seconds. This affects the connection between ZNC and the IRC server; not the connection between your IRC client and ZNC." ?>"/>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="subsection half">
|
||||
<div class="inputlabel">Server Throttle:</div>
|
||||
<input type="text" name="serverthrottle" value="<? VAR ServerThrottle ?>"
|
||||
title="The time between two connect attempts to the same hostname." />
|
||||
<div class="inputlabel"><? FORMAT "Server Throttle:" ?></div>
|
||||
<input type="number" name="serverthrottle" value="<? VAR ServerThrottle ?>"
|
||||
title="<? FORMAT "The minimal time between two connect attempts to the same hostname, in seconds. Some servers refuse your connection if you reconnect too fast." ?>"/>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="subsection half">
|
||||
<div class="inputlabel">Anonymous IP Limit:</div>
|
||||
<input type="text" name="anoniplimit" value="<? VAR AnonIPLimit ?>"
|
||||
title="Limits the number of unidentified connections per IP." />
|
||||
<div class="inputlabel"><? FORMAT "Anonymous Connection Limit per IP:" ?></div>
|
||||
<input type="number" name="anoniplimit" value="<? VAR AnonIPLimit ?>"
|
||||
title="<? FORMAT "Limits the number of unidentified connections per IP." ?>"/>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Protect Web Sessions:</div>
|
||||
<div class="inputlabel"><? FORMAT "Protect Web Sessions:" ?></div>
|
||||
<div class="checkbox"><input type="checkbox" name="protectwebsessions" id="protectwebsessions_checkbox"<? IF ProtectWebSessions ?> checked="checked"<? ENDIF ?> />
|
||||
<label for="protectwebsessions_checkbox">Disallow IP changing during each web session</label></div>
|
||||
<label for="protectwebsessions_checkbox"><? FORMAT "Disallow IP changing during each web session" ?></label></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="subsection">
|
||||
<div class="inputlabel">Hide ZNC Version:</div>
|
||||
<div class="inputlabel"><? FORMAT "Hide ZNC Version:" ?></div>
|
||||
<div class="checkbox"><input type="checkbox" name="hideversion" id="hideversion_checkbox"<? IF HideVersion ?> checked="checked"<? ENDIF ?> />
|
||||
<label for="hideversion_checkbox">Hide version number from non-ZNC users</label></div>
|
||||
<label for="hideversion_checkbox"><? FORMAT "Hide version number from non-ZNC users" ?></label></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="subsection twothird">
|
||||
<div class="inputlabel">MOTD:</div>
|
||||
<div class="inputlabel"><? FORMAT "MOTD:" ?></div>
|
||||
<textarea name="motd" cols="70" rows="5" class="monospace"><? LOOP MOTDLoop ?><? VAR Line ?>
|
||||
<? ENDLOOP ?>
|
||||
</textarea>
|
||||
<br /><span class="info">"Message of the Day", sent to all ZNC users on connect.</span>
|
||||
<br /><span class="info"><? FORMAT "“Message of the Day”, sent to all ZNC users on connect." ?></span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -160,17 +161,17 @@
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h3>Global Modules</h3>
|
||||
<h3><? FORMAT "Global Modules" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Name</td>
|
||||
<td>Arguments</td>
|
||||
<td>Description</td>
|
||||
<td>Loaded by networks</td>
|
||||
<td>Loaded by users</td>
|
||||
<td><? FORMAT "Name" ?></td>
|
||||
<td><? FORMAT "Arguments" ?></td>
|
||||
<td><? FORMAT "Description" ?></td>
|
||||
<td><? FORMAT "Loaded by networks" ?></td>
|
||||
<td><? FORMAT "Loaded by users" ?></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -227,7 +228,7 @@
|
||||
</div>
|
||||
|
||||
<div class="submitline">
|
||||
<input type="submit" value="Save" />
|
||||
<input type="submit" value="<? FORMAT "Save" ?>"/>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
@@ -1,53 +1,54 @@
|
||||
<? I18N znc-webadmin ?>
|
||||
<? INC Header.tmpl ?>
|
||||
|
||||
<div class="textsection">
|
||||
|
||||
<div class="section">
|
||||
<h3>Information</h3>
|
||||
<h3><? FORMAT "Information" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr class="oddrow">
|
||||
<th>Uptime</th>
|
||||
<th><? FORMAT "Uptime" ?></th>
|
||||
<td><? VAR Uptime ?></td>
|
||||
</tr>
|
||||
<? IF IsAdmin ?>
|
||||
<tr class="evenrow">
|
||||
<th>Total Users</th>
|
||||
<th><? FORMAT "Total Users" ?></th>
|
||||
<td><? VAR TotalUsers ?></td>
|
||||
</tr>
|
||||
<tr class="oddrow">
|
||||
<th>Total Networks</th>
|
||||
<th><? FORMAT "Total Networks" ?></th>
|
||||
<td><? VAR TotalNetworks ?></td>
|
||||
</tr>
|
||||
<tr class="evenrow">
|
||||
<th>Attached Networks</th>
|
||||
<th><? FORMAT "Attached Networks" ?></th>
|
||||
<td><? VAR AttachedNetworks ?></td>
|
||||
</tr>
|
||||
<tr class="oddrow">
|
||||
<th>Total Client Connections</th>
|
||||
<th><? FORMAT "Total Client Connections" ?></th>
|
||||
<td><? VAR TotalCConnections ?></td>
|
||||
</tr>
|
||||
<tr class="evenrow">
|
||||
<th>Total IRC Connections</th>
|
||||
<th><? FORMAT "Total IRC Connections" ?></th>
|
||||
<td><? VAR TotalIRCConnections ?></td>
|
||||
</tr>
|
||||
<? ELSE ?>
|
||||
<tr class="evenrow">
|
||||
<th>Networks</th>
|
||||
<th><? FORMAT "Networks" ?></th>
|
||||
<td><? VAR TotalNetworks ?></td>
|
||||
</tr>
|
||||
<tr class="oddrow">
|
||||
<th>Attached Networks</th>
|
||||
<th><? FORMAT "Attached Networks" ?></th>
|
||||
<td><? VAR AttachedNetworks ?></td>
|
||||
</tr>
|
||||
<tr class="evenrow">
|
||||
<th>Client Connections</th>
|
||||
<th><? FORMAT "Client Connections" ?></th>
|
||||
<td><? VAR TotalCConnections ?></td>
|
||||
</tr>
|
||||
<tr class="oddrow">
|
||||
<th>IRC Connections</th>
|
||||
<th><? FORMAT "IRC Connections" ?></th>
|
||||
<td><? VAR TotalIRCConnections ?></td>
|
||||
</tr>
|
||||
<? ENDIF ?>
|
||||
@@ -59,21 +60,21 @@
|
||||
|
||||
<? IF IsAdmin ?>
|
||||
<div class="section">
|
||||
<h3>Total</h3>
|
||||
<h3><? FORMAT "Total" ?></h3>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>In</td>
|
||||
<td>Out</td>
|
||||
<td>Total</td>
|
||||
<td><? FORMAT CTX="Traffic" "In" ?></td>
|
||||
<td><? FORMAT CTX="Traffic" "Out" ?></td>
|
||||
<td><? FORMAT "Total" ?></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="evenrow">
|
||||
<td>Users</td>
|
||||
<td><? FORMAT "Users" ?></td>
|
||||
<td><? VAR UserIn TOP ?></td>
|
||||
<td><? VAR UserOut TOP ?></td>
|
||||
<td><? VAR UserTotal TOP ?></td>
|
||||
@@ -85,7 +86,7 @@
|
||||
<td><? VAR ZNCTotal TOP ?></td>
|
||||
</tr>
|
||||
<tr class="evenrow">
|
||||
<td>Total</td>
|
||||
<td><? FORMAT "Total" ?></td>
|
||||
<td><? VAR AllIn TOP ?></td>
|
||||
<td><? VAR AllOut TOP ?></td>
|
||||
<td><? VAR AllTotal TOP ?></td>
|
||||
@@ -100,20 +101,20 @@
|
||||
<? IF TrafficLoop ?>
|
||||
<div class="section">
|
||||
<? IF IsAdmin ?>
|
||||
<h3>Users</h3>
|
||||
<h3><? FORMAT "Users" ?></h3>
|
||||
<? ELSE ?>
|
||||
<h3>Traffic</h3>
|
||||
<h3><? FORMAT "Traffic" ?></h3>
|
||||
<? ENDIF ?>
|
||||
<div class="sectionbg">
|
||||
<div class="sectionbody">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Username</td>
|
||||
<td>Network</td>
|
||||
<td>In</td>
|
||||
<td>Out</td>
|
||||
<td>Total</td>
|
||||
<td><? FORMAT "User" ?></td>
|
||||
<td><? FORMAT "Network" ?></td>
|
||||
<td><? FORMAT CTX="Traffic" "In" ?></td>
|
||||
<td><? FORMAT CTX="Traffic" "Out" ?></td>
|
||||
<td><? FORMAT "Total" ?></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
+31
-26
@@ -1,3 +1,34 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:5
|
||||
msgid "here"
|
||||
msgstr ""
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:6
|
||||
msgid ""
|
||||
"You already have a certificate set, use the form below to overwrite the "
|
||||
"current certificate. Alternatively click {1} to delete your certificate."
|
||||
msgstr ""
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:8
|
||||
msgid "You do not have a certificate yet."
|
||||
msgstr ""
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:14 cert.cpp:73
|
||||
msgid "Certificate"
|
||||
msgstr ""
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:18
|
||||
msgid "PEM File:"
|
||||
msgstr ""
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:22
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
|
||||
#: cert.cpp:28
|
||||
msgid "Pem file deleted"
|
||||
msgstr ""
|
||||
@@ -28,32 +59,6 @@ msgstr ""
|
||||
msgid "Show the current certificate"
|
||||
msgstr ""
|
||||
|
||||
#: cert.cpp:73 modules/po/../data/cert/tmpl/index.tmpl:14
|
||||
msgid "Certificate"
|
||||
msgstr ""
|
||||
|
||||
#: cert.cpp:106
|
||||
msgid "Use a ssl certificate to connect to a server"
|
||||
msgstr ""
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:5
|
||||
msgid "here"
|
||||
msgstr ""
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:6
|
||||
msgid ""
|
||||
"You already have a certificate set, use the form below to overwrite the "
|
||||
"current certificate. Alternatively click {1} to delete your certificate."
|
||||
msgstr ""
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:8
|
||||
msgid "You do not have a certificate yet."
|
||||
msgstr ""
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:18
|
||||
msgid "PEM File:"
|
||||
msgstr ""
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:22
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
|
||||
+28
-28
@@ -19,6 +19,34 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:5
|
||||
msgid "here"
|
||||
msgstr "сюда"
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:6
|
||||
msgid ""
|
||||
"You already have a certificate set, use the form below to overwrite the "
|
||||
"current certificate. Alternatively click {1} to delete your certificate."
|
||||
msgstr ""
|
||||
"У вас уже есть сертификат, с помощью формы ниже можно его изменить. Чтобы "
|
||||
"удалить сертификат, нажмите {1}."
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:8
|
||||
msgid "You do not have a certificate yet."
|
||||
msgstr "У вас пока нет сертификата."
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:14 cert.cpp:73
|
||||
msgid "Certificate"
|
||||
msgstr "Сертификат"
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:18
|
||||
msgid "PEM File:"
|
||||
msgstr "Файл PEM:"
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:22
|
||||
msgid "Update"
|
||||
msgstr "Обновить"
|
||||
|
||||
#: cert.cpp:28
|
||||
msgid "Pem file deleted"
|
||||
msgstr "Файл Pem удалён"
|
||||
@@ -49,34 +77,6 @@ msgstr "Удалить текущий сертификат"
|
||||
msgid "Show the current certificate"
|
||||
msgstr "Показать текущий сертификат"
|
||||
|
||||
#: cert.cpp:73 modules/po/../data/cert/tmpl/index.tmpl:14
|
||||
msgid "Certificate"
|
||||
msgstr "Сертификат"
|
||||
|
||||
#: cert.cpp:106
|
||||
msgid "Use a ssl certificate to connect to a server"
|
||||
msgstr "Соединение с сервером с помошью сертификата SSL"
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:5
|
||||
msgid "here"
|
||||
msgstr "сюда"
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:6
|
||||
msgid ""
|
||||
"You already have a certificate set, use the form below to overwrite the "
|
||||
"current certificate. Alternatively click {1} to delete your certificate."
|
||||
msgstr ""
|
||||
"У вас уже есть сертификат, с помощью формы ниже можно его изменить. Чтобы "
|
||||
"удалить сертификат, нажмите {1}."
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:8
|
||||
msgid "You do not have a certificate yet."
|
||||
msgstr "У вас пока нет сертификата."
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:18
|
||||
msgid "PEM File:"
|
||||
msgstr "Файл PEM:"
|
||||
|
||||
#: modules/po/../data/cert/tmpl/index.tmpl:22
|
||||
msgid "Update"
|
||||
msgstr "Обновить"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+128
-115
@@ -87,14 +87,14 @@ class CWebAdminMod : public CModule {
|
||||
MODCONSTRUCTOR(CWebAdminMod) {
|
||||
VPair vParams;
|
||||
vParams.push_back(make_pair("user", ""));
|
||||
AddSubPage(std::make_shared<CWebSubPage>("settings", "Global Settings",
|
||||
CWebSubPage::F_ADMIN));
|
||||
AddSubPage(std::make_shared<CWebSubPage>("edituser", "Your Settings",
|
||||
AddSubPage(std::make_shared<CWebSubPage>(
|
||||
"settings", d("Global Settings"), vParams, CWebSubPage::F_ADMIN));
|
||||
AddSubPage(std::make_shared<CWebSubPage>("edituser", d("Your Settings"),
|
||||
vParams));
|
||||
AddSubPage(
|
||||
std::make_shared<CWebSubPage>("traffic", "Traffic Info", vParams));
|
||||
AddSubPage(std::make_shared<CWebSubPage>("listusers", "Manage Users",
|
||||
CWebSubPage::F_ADMIN));
|
||||
AddSubPage(std::make_shared<CWebSubPage>("traffic", d("Traffic Info"),
|
||||
vParams));
|
||||
AddSubPage(std::make_shared<CWebSubPage>(
|
||||
"listusers", d("Manage Users"), vParams, CWebSubPage::F_ADMIN));
|
||||
}
|
||||
|
||||
~CWebAdminMod() override {}
|
||||
@@ -184,7 +184,8 @@ class CWebAdminMod : public CModule {
|
||||
}
|
||||
|
||||
if (sUsername.empty()) {
|
||||
WebSock.PrintErrorPage("Invalid Submission [Username is required]");
|
||||
WebSock.PrintErrorPage(
|
||||
t("Invalid Submission [Username is required]"));
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -197,7 +198,7 @@ class CWebAdminMod : public CModule {
|
||||
|
||||
if (sArg != WebSock.GetParam("password2")) {
|
||||
WebSock.PrintErrorPage(
|
||||
"Invalid Submission [Passwords do not match]");
|
||||
t("Invalid Submission [Passwords do not match]"));
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -378,12 +379,14 @@ class CWebAdminMod : public CModule {
|
||||
if (!pNewUser->GetModules().LoadModule(
|
||||
sModName, sArgs, CModInfo::UserModule, pNewUser,
|
||||
nullptr, sModRet)) {
|
||||
sModLoadError = "Unable to load module [" +
|
||||
sModName + "] [" + sModRet + "]";
|
||||
sModLoadError =
|
||||
f("Unable to load module [{1}]: {2}")(sModName,
|
||||
sModRet);
|
||||
}
|
||||
} catch (...) {
|
||||
sModLoadError = "Unable to load module [" + sModName +
|
||||
"] [" + sArgs + "]";
|
||||
sModLoadError = f(
|
||||
"Unable to load module [{1}] with arguments [{2}]")(
|
||||
sModName, sArgs);
|
||||
}
|
||||
|
||||
if (!sModLoadError.empty()) {
|
||||
@@ -405,11 +408,13 @@ class CWebAdminMod : public CModule {
|
||||
if (!pNewUser->GetModules().LoadModule(
|
||||
sModName, sArgs, CModInfo::UserModule, pNewUser,
|
||||
nullptr, sModRet)) {
|
||||
sModLoadError = "Unable to load module [" + sModName +
|
||||
"] [" + sModRet + "]";
|
||||
sModLoadError = f("Unable to load module [{1}]: {2}")(
|
||||
sModName, sModRet);
|
||||
}
|
||||
} catch (...) {
|
||||
sModLoadError = "Unable to load module [" + sModName + "]";
|
||||
sModLoadError =
|
||||
f("Unable to load module [{1}] with arguments [{2}]")(
|
||||
sModName, sArgs);
|
||||
}
|
||||
|
||||
if (!sModLoadError.empty()) {
|
||||
@@ -489,7 +494,7 @@ class CWebAdminMod : public CModule {
|
||||
return NetworkPage(WebSock, Tmpl, pUser);
|
||||
}
|
||||
|
||||
WebSock.PrintErrorPage("No such username");
|
||||
WebSock.PrintErrorPage(t("No such user"));
|
||||
return true;
|
||||
} else if (sPageName == "editnetwork") {
|
||||
CIRCNetwork* pNetwork = SafeGetNetworkFromParam(WebSock);
|
||||
@@ -502,7 +507,7 @@ class CWebAdminMod : public CModule {
|
||||
}
|
||||
|
||||
if (!pNetwork) {
|
||||
WebSock.PrintErrorPage("No such username or network");
|
||||
WebSock.PrintErrorPage(t("No such user or network"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -534,7 +539,7 @@ class CWebAdminMod : public CModule {
|
||||
}
|
||||
|
||||
if (!pNetwork) {
|
||||
WebSock.PrintErrorPage("No such username or network");
|
||||
WebSock.PrintErrorPage(t("No such user or network"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -544,7 +549,7 @@ class CWebAdminMod : public CModule {
|
||||
}
|
||||
CChan* pChan = pNetwork->FindChan(sChan);
|
||||
if (!pChan) {
|
||||
WebSock.PrintErrorPage("No such channel");
|
||||
WebSock.PrintErrorPage(t("No such channel"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -563,7 +568,7 @@ class CWebAdminMod : public CModule {
|
||||
return ChanPage(WebSock, Tmpl, pNetwork);
|
||||
}
|
||||
|
||||
WebSock.PrintErrorPage("No such username or network");
|
||||
WebSock.PrintErrorPage(t("No such user or network"));
|
||||
return true;
|
||||
} else if (sPageName == "delchan") {
|
||||
CIRCNetwork* pNetwork = SafeGetNetworkFromParam(WebSock);
|
||||
@@ -579,7 +584,7 @@ class CWebAdminMod : public CModule {
|
||||
return DelChan(WebSock, pNetwork);
|
||||
}
|
||||
|
||||
WebSock.PrintErrorPage("No such username or network");
|
||||
WebSock.PrintErrorPage(t("No such user or network"));
|
||||
return true;
|
||||
} else if (sPageName == "deluser") {
|
||||
if (!spSession->IsAdmin()) {
|
||||
@@ -593,7 +598,7 @@ class CWebAdminMod : public CModule {
|
||||
CUser* pUser = CZNC::Get().FindUser(sUser);
|
||||
|
||||
if (!pUser) {
|
||||
WebSock.PrintErrorPage("No such username");
|
||||
WebSock.PrintErrorPage(t("No such user"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -610,14 +615,15 @@ class CWebAdminMod : public CModule {
|
||||
|
||||
if (pUser && pUser == spSession->GetUser()) {
|
||||
WebSock.PrintErrorPage(
|
||||
"Please don't delete yourself, suicide is not the answer!");
|
||||
t("Please don't delete yourself, suicide is not the "
|
||||
"answer!"));
|
||||
return true;
|
||||
} else if (CZNC::Get().DeleteUser(sUser)) {
|
||||
WebSock.Redirect(GetWebPath() + "listusers");
|
||||
return true;
|
||||
}
|
||||
|
||||
WebSock.PrintErrorPage("No such username");
|
||||
WebSock.PrintErrorPage(t("No such user"));
|
||||
return true;
|
||||
} else if (sPageName == "edituser") {
|
||||
CString sUserName = SafeGetUserNameParam(WebSock);
|
||||
@@ -639,7 +645,7 @@ class CWebAdminMod : public CModule {
|
||||
return UserPage(WebSock, Tmpl, pUser);
|
||||
}
|
||||
|
||||
WebSock.PrintErrorPage("No such username");
|
||||
WebSock.PrintErrorPage(t("No such user"));
|
||||
return true;
|
||||
} else if (sPageName == "listusers" && spSession->IsAdmin()) {
|
||||
return ListUsersPage(WebSock, Tmpl);
|
||||
@@ -673,7 +679,7 @@ class CWebAdminMod : public CModule {
|
||||
CUser* pUser = pNetwork->GetUser();
|
||||
|
||||
if (!pUser) {
|
||||
WebSock.PrintErrorPage("That user doesn't exist");
|
||||
WebSock.PrintErrorPage(t("No such user"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -682,11 +688,11 @@ class CWebAdminMod : public CModule {
|
||||
Tmpl["Network"] = pNetwork->GetName();
|
||||
|
||||
CTemplate& breadUser = Tmpl.AddRow("BreadCrumbs");
|
||||
breadUser["Text"] = "Edit User [" + pUser->GetUserName() + "]";
|
||||
breadUser["Text"] = f("Edit User [{1}]")(pUser->GetUserName());
|
||||
breadUser["URL"] =
|
||||
GetWebPath() + "edituser?user=" + pUser->GetUserName();
|
||||
CTemplate& breadNet = Tmpl.AddRow("BreadCrumbs");
|
||||
breadNet["Text"] = "Edit Network [" + pNetwork->GetName() + "]";
|
||||
breadNet["Text"] = f("Edit Network [{1}]")(pNetwork->GetName());
|
||||
breadNet["URL"] = GetWebPath() + "editnetwork?user=" +
|
||||
pUser->GetUserName() + "&network=" +
|
||||
pNetwork->GetName();
|
||||
@@ -696,35 +702,35 @@ class CWebAdminMod : public CModule {
|
||||
Tmpl["Action"] = "editchan";
|
||||
Tmpl["Edit"] = "true";
|
||||
Tmpl["Title"] =
|
||||
"Edit Channel" + CString(" [" + pChan->GetName() + "]") +
|
||||
" of Network [" + pNetwork->GetName() + "] of User [" +
|
||||
pNetwork->GetUser()->GetUserName() + "]";
|
||||
f("Edit Channel [{1}] of Network [{2}] of User [{3}]")(
|
||||
pChan->GetName(), pNetwork->GetName(),
|
||||
pUser->GetUserName());
|
||||
Tmpl["ChanName"] = pChan->GetName();
|
||||
Tmpl["BufferSize"] = CString(pChan->GetBufferCount());
|
||||
Tmpl["DefModes"] = pChan->GetDefaultModes();
|
||||
Tmpl["Key"] = pChan->GetKey();
|
||||
breadChan["Text"] = "Edit Channel [" + pChan->GetName() + "]";
|
||||
breadChan["Text"] = f("Edit Channel [{1}]")(pChan->GetName());
|
||||
|
||||
if (pChan->InConfig()) {
|
||||
Tmpl["InConfig"] = "true";
|
||||
}
|
||||
} else {
|
||||
Tmpl["Action"] = "addchan";
|
||||
Tmpl["Title"] =
|
||||
"Add Channel" +
|
||||
CString(" for User [" + pUser->GetUserName() + "]");
|
||||
Tmpl["Title"] = f("Add Channel to Network [{1}] of User [{2}]")(
|
||||
pNetwork->GetName(), pUser->GetUserName());
|
||||
Tmpl["BufferSize"] = CString(pUser->GetBufferCount());
|
||||
Tmpl["DefModes"] = CString(pUser->GetDefaultChanModes());
|
||||
Tmpl["InConfig"] = "true";
|
||||
breadChan["Text"] = "Add Channel";
|
||||
breadChan["Text"] = t("Add Channel");
|
||||
}
|
||||
|
||||
// o1 used to be AutoCycle which was removed
|
||||
|
||||
CTemplate& o2 = Tmpl.AddRow("OptionLoop");
|
||||
o2["Name"] = "autoclearchanbuffer";
|
||||
o2["DisplayName"] = "Auto Clear Chan Buffer";
|
||||
o2["Tooltip"] = "Automatically Clear Channel Buffer After Playback";
|
||||
o2["DisplayName"] = t("Auto Clear Chan Buffer");
|
||||
o2["Tooltip"] =
|
||||
t("Automatically Clear Channel Buffer After Playback");
|
||||
if ((pChan && pChan->AutoClearChanBuffer()) ||
|
||||
(!pChan && pUser->AutoClearChanBuffer())) {
|
||||
o2["Checked"] = "true";
|
||||
@@ -732,15 +738,15 @@ class CWebAdminMod : public CModule {
|
||||
|
||||
CTemplate& o3 = Tmpl.AddRow("OptionLoop");
|
||||
o3["Name"] = "detached";
|
||||
o3["DisplayName"] = "Detached";
|
||||
o3["DisplayName"] = t("Detached");
|
||||
if (pChan && pChan->IsDetached()) {
|
||||
o3["Checked"] = "true";
|
||||
}
|
||||
|
||||
CTemplate& o4 = Tmpl.AddRow("OptionLoop");
|
||||
o4["Name"] = "disabled";
|
||||
o4["DisplayName"] = "Disabled";
|
||||
if (pChan && pChan->IsDisabled()) {
|
||||
o4["Name"] = "enabled";
|
||||
o4["DisplayName"] = t("Enabled");
|
||||
if (pChan && !pChan->IsDisabled()) {
|
||||
o4["Checked"] = "true";
|
||||
}
|
||||
|
||||
@@ -762,7 +768,8 @@ class CWebAdminMod : public CModule {
|
||||
|
||||
if (!pChan) {
|
||||
if (sChanName.empty()) {
|
||||
WebSock.PrintErrorPage("Channel name is a required argument");
|
||||
WebSock.PrintErrorPage(
|
||||
t("Channel name is a required argument"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -770,15 +777,15 @@ class CWebAdminMod : public CModule {
|
||||
pChan = new CChan(sChanName, pNetwork, true);
|
||||
|
||||
if (pNetwork->FindChan(pChan->GetName())) {
|
||||
WebSock.PrintErrorPage("Channel [" + pChan->GetName() +
|
||||
"] already exists");
|
||||
WebSock.PrintErrorPage(
|
||||
f("Channel [{1}] already exists")(pChan->GetName()));
|
||||
delete pChan;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!pNetwork->AddChan(pChan)) {
|
||||
WebSock.PrintErrorPage("Could not add channel [" + sChanName +
|
||||
"]");
|
||||
WebSock.PrintErrorPage(
|
||||
f("Could not add channel [{1}]")(sChanName));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -810,11 +817,11 @@ class CWebAdminMod : public CModule {
|
||||
}
|
||||
}
|
||||
|
||||
bool bDisabled = WebSock.GetParam("disabled").ToBool();
|
||||
if (bDisabled)
|
||||
pChan->Disable();
|
||||
else
|
||||
bool bEnabled = WebSock.GetParam("enabled").ToBool();
|
||||
if (bEnabled)
|
||||
pChan->Enable();
|
||||
else
|
||||
pChan->Disable();
|
||||
|
||||
CTemplate TmplMod;
|
||||
TmplMod["User"] = pUser->GetUserName();
|
||||
@@ -825,8 +832,8 @@ class CWebAdminMod : public CModule {
|
||||
}
|
||||
|
||||
if (!CZNC::Get().WriteConfig()) {
|
||||
WebSock.PrintErrorPage(
|
||||
"Channel added/modified, but config was not written");
|
||||
WebSock.PrintErrorPage(t(
|
||||
"Channel was added/modified, but config file was not written"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -902,7 +909,7 @@ class CWebAdminMod : public CModule {
|
||||
}
|
||||
|
||||
CTemplate& breadUser = Tmpl.AddRow("BreadCrumbs");
|
||||
breadUser["Text"] = "Edit User [" + pUser->GetUserName() + "]";
|
||||
breadUser["Text"] = f("Edit User [{1}]")(pUser->GetUserName());
|
||||
breadUser["URL"] =
|
||||
GetWebPath() + "edituser?user=" + pUser->GetUserName();
|
||||
CTemplate& breadNet = Tmpl.AddRow("BreadCrumbs");
|
||||
@@ -910,9 +917,8 @@ class CWebAdminMod : public CModule {
|
||||
if (pNetwork) {
|
||||
Tmpl["Action"] = "editnetwork";
|
||||
Tmpl["Edit"] = "true";
|
||||
Tmpl["Title"] = "Edit Network" +
|
||||
CString(" [" + pNetwork->GetName() + "]") +
|
||||
" of User [" + pUser->GetUserName() + "]";
|
||||
Tmpl["Title"] = f("Edit Network [{1}] of User [{2}]")(
|
||||
pNetwork->GetName(), pUser->GetUserName());
|
||||
Tmpl["Name"] = pNetwork->GetName();
|
||||
|
||||
Tmpl["Nick"] = pNetwork->GetNick();
|
||||
@@ -932,7 +938,7 @@ class CWebAdminMod : public CModule {
|
||||
Tmpl["IRCConnectEnabled"] =
|
||||
CString(pNetwork->GetIRCConnectEnabled());
|
||||
|
||||
breadNet["Text"] = "Edit Network [" + pNetwork->GetName() + "]";
|
||||
breadNet["Text"] = f("Edit Network [{1}]")(pNetwork->GetName());
|
||||
|
||||
const vector<CServer*>& vServers = pNetwork->GetServers();
|
||||
for (const CServer* pServer : vServers) {
|
||||
@@ -969,21 +975,21 @@ class CWebAdminMod : public CModule {
|
||||
} else {
|
||||
if (!spSession->IsAdmin() && !pUser->HasSpaceForNewNetwork()) {
|
||||
WebSock.PrintErrorPage(
|
||||
"Network number limit reached. Ask an admin to "
|
||||
"increase the limit for you, or delete unneeded "
|
||||
"networks from Your Settings.");
|
||||
t("Network number limit reached. Ask an admin to "
|
||||
"increase the limit for you, or delete unneeded "
|
||||
"networks from Your Settings."));
|
||||
return true;
|
||||
}
|
||||
|
||||
Tmpl["Action"] = "addnetwork";
|
||||
Tmpl["Title"] =
|
||||
"Add Network for User [" + pUser->GetUserName() + "]";
|
||||
f("Add Network for User [{1}]")(pUser->GetUserName());
|
||||
Tmpl["IRCConnectEnabled"] = "true";
|
||||
Tmpl["FloodProtection"] = "true";
|
||||
Tmpl["FloodRate"] = "1.0";
|
||||
Tmpl["FloodBurst"] = "4";
|
||||
Tmpl["JoinDelay"] = "0";
|
||||
breadNet["Text"] = "Add Network";
|
||||
breadNet["Text"] = t("Add Network");
|
||||
}
|
||||
|
||||
FOR_EACH_MODULE(i, make_pair(pUser, pNetwork)) {
|
||||
@@ -1029,14 +1035,15 @@ class CWebAdminMod : public CModule {
|
||||
|
||||
CString sName = WebSock.GetParam("name").Trim_n();
|
||||
if (sName.empty()) {
|
||||
WebSock.PrintErrorPage("Network name is a required argument");
|
||||
WebSock.PrintErrorPage(t("Network name is a required argument"));
|
||||
return true;
|
||||
}
|
||||
if (!pNetwork && !spSession->IsAdmin() &&
|
||||
!pUser->HasSpaceForNewNetwork()) {
|
||||
WebSock.PrintErrorPage(
|
||||
"Network number limit reached. Ask an admin to increase the "
|
||||
"limit for you, or delete few old ones from Your Settings");
|
||||
t("Network number limit reached. Ask an admin to increase the "
|
||||
"limit for you, or delete unneeded networks from Your "
|
||||
"Settings."));
|
||||
return true;
|
||||
}
|
||||
if (!pNetwork || pNetwork->GetName() != sName) {
|
||||
@@ -1141,14 +1148,16 @@ class CWebAdminMod : public CModule {
|
||||
if (!pNetwork->GetModules().LoadModule(
|
||||
sModName, sArgs, CModInfo::NetworkModule, pUser,
|
||||
pNetwork, sModRet)) {
|
||||
sModLoadError = "Unable to load module [" +
|
||||
sModName + "] [" + sModRet + "]";
|
||||
sModLoadError =
|
||||
f("Unable to load module [{1}]: {2}")(sModName,
|
||||
sModRet);
|
||||
}
|
||||
} else if (pMod->GetArgs() != sArgs) {
|
||||
if (!pNetwork->GetModules().ReloadModule(
|
||||
sModName, sArgs, pUser, pNetwork, sModRet)) {
|
||||
sModLoadError = "Unable to reload module [" +
|
||||
sModName + "] [" + sModRet + "]";
|
||||
sModLoadError =
|
||||
f("Unable to reload module [{1}]: {2}")(
|
||||
sModName, sModRet);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1183,8 +1192,8 @@ class CWebAdminMod : public CModule {
|
||||
}
|
||||
|
||||
if (!CZNC::Get().WriteConfig()) {
|
||||
WebSock.PrintErrorPage(
|
||||
"Network added/modified, but config was not written");
|
||||
WebSock.PrintErrorPage(t(
|
||||
"Network was added/modified, but config file was not written"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1207,12 +1216,13 @@ class CWebAdminMod : public CModule {
|
||||
}
|
||||
|
||||
if (!pUser) {
|
||||
WebSock.PrintErrorPage("That user doesn't exist");
|
||||
WebSock.PrintErrorPage(t("No such user"));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (sNetwork.empty()) {
|
||||
WebSock.PrintErrorPage("That network doesn't exist for this user");
|
||||
WebSock.PrintErrorPage(
|
||||
t("That network doesn't exist for this user"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1229,7 +1239,7 @@ class CWebAdminMod : public CModule {
|
||||
|
||||
if (!CZNC::Get().WriteConfig()) {
|
||||
WebSock.PrintErrorPage(
|
||||
"Network deleted, but config was not written");
|
||||
t("Network was deleted, but config file was not written"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1242,7 +1252,8 @@ class CWebAdminMod : public CModule {
|
||||
CString sChan = WebSock.GetParam("name", false);
|
||||
|
||||
if (sChan.empty()) {
|
||||
WebSock.PrintErrorPage("That channel doesn't exist for this user");
|
||||
WebSock.PrintErrorPage(
|
||||
t("That channel doesn't exist for this network"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1251,7 +1262,7 @@ class CWebAdminMod : public CModule {
|
||||
|
||||
if (!CZNC::Get().WriteConfig()) {
|
||||
WebSock.PrintErrorPage(
|
||||
"Channel deleted, but config was not written");
|
||||
t("Channel was deleted, but config file was not written"));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1269,14 +1280,14 @@ class CWebAdminMod : public CModule {
|
||||
if (!WebSock.GetParam("submitted").ToUInt()) {
|
||||
if (pUser) {
|
||||
Tmpl["Action"] = "edituser";
|
||||
Tmpl["Title"] = "Edit User [" + pUser->GetUserName() + "]";
|
||||
Tmpl["Title"] = f("Edit User [{1}]")(pUser->GetUserName());
|
||||
Tmpl["Edit"] = "true";
|
||||
} else {
|
||||
CString sUsername = WebSock.GetParam("clone", false);
|
||||
pUser = CZNC::Get().FindUser(sUsername);
|
||||
|
||||
if (pUser) {
|
||||
Tmpl["Title"] = "Clone User [" + pUser->GetUserName() + "]";
|
||||
Tmpl["Title"] = f("Clone User [{1}]")(pUser->GetUserName());
|
||||
Tmpl["Clone"] = "true";
|
||||
Tmpl["CloneUsername"] = pUser->GetUserName();
|
||||
}
|
||||
@@ -1457,10 +1468,10 @@ class CWebAdminMod : public CModule {
|
||||
|
||||
CTemplate& o1 = Tmpl.AddRow("OptionLoop");
|
||||
o1["Name"] = "autoclearchanbuffer";
|
||||
o1["DisplayName"] = "Auto Clear Chan Buffer";
|
||||
o1["DisplayName"] = t("Auto Clear Chan Buffer");
|
||||
o1["Tooltip"] =
|
||||
"Automatically Clear Channel Buffer After Playback (the "
|
||||
"default value for new channels)";
|
||||
t("Automatically Clear Channel Buffer After Playback (the "
|
||||
"default value for new channels)");
|
||||
if (!pUser || pUser->AutoClearChanBuffer()) {
|
||||
o1["Checked"] = "true";
|
||||
}
|
||||
@@ -1469,21 +1480,21 @@ class CWebAdminMod : public CModule {
|
||||
|
||||
CTemplate& o4 = Tmpl.AddRow("OptionLoop");
|
||||
o4["Name"] = "multiclients";
|
||||
o4["DisplayName"] = "Multi Clients";
|
||||
o4["DisplayName"] = t("Multi Clients");
|
||||
if (!pUser || pUser->MultiClients()) {
|
||||
o4["Checked"] = "true";
|
||||
}
|
||||
|
||||
CTemplate& o7 = Tmpl.AddRow("OptionLoop");
|
||||
o7["Name"] = "appendtimestamp";
|
||||
o7["DisplayName"] = "Append Timestamps";
|
||||
o7["DisplayName"] = t("Append Timestamps");
|
||||
if (pUser && pUser->GetTimestampAppend()) {
|
||||
o7["Checked"] = "true";
|
||||
}
|
||||
|
||||
CTemplate& o8 = Tmpl.AddRow("OptionLoop");
|
||||
o8["Name"] = "prependtimestamp";
|
||||
o8["DisplayName"] = "Prepend Timestamps";
|
||||
o8["DisplayName"] = t("Prepend Timestamps");
|
||||
if (pUser && pUser->GetTimestampPrepend()) {
|
||||
o8["Checked"] = "true";
|
||||
}
|
||||
@@ -1491,14 +1502,14 @@ class CWebAdminMod : public CModule {
|
||||
if (spSession->IsAdmin()) {
|
||||
CTemplate& o9 = Tmpl.AddRow("OptionLoop");
|
||||
o9["Name"] = "denyloadmod";
|
||||
o9["DisplayName"] = "Deny LoadMod";
|
||||
o9["DisplayName"] = t("Deny LoadMod");
|
||||
if (pUser && pUser->DenyLoadMod()) {
|
||||
o9["Checked"] = "true";
|
||||
}
|
||||
|
||||
CTemplate& o10 = Tmpl.AddRow("OptionLoop");
|
||||
o10["Name"] = "isadmin";
|
||||
o10["DisplayName"] = "Admin";
|
||||
o10["DisplayName"] = t("Admin");
|
||||
if (pUser && pUser->IsAdmin()) {
|
||||
o10["Checked"] = "true";
|
||||
}
|
||||
@@ -1508,7 +1519,7 @@ class CWebAdminMod : public CModule {
|
||||
|
||||
CTemplate& o11 = Tmpl.AddRow("OptionLoop");
|
||||
o11["Name"] = "denysetbindhost";
|
||||
o11["DisplayName"] = "Deny SetBindHost";
|
||||
o11["DisplayName"] = t("Deny SetBindHost");
|
||||
if (pUser && pUser->DenySetBindHost()) {
|
||||
o11["Checked"] = "true";
|
||||
}
|
||||
@@ -1516,8 +1527,9 @@ class CWebAdminMod : public CModule {
|
||||
|
||||
CTemplate& o12 = Tmpl.AddRow("OptionLoop");
|
||||
o12["Name"] = "autoclearquerybuffer";
|
||||
o12["DisplayName"] = "Auto Clear Query Buffer";
|
||||
o12["Tooltip"] = "Automatically Clear Query Buffer After Playback";
|
||||
o12["DisplayName"] = t("Auto Clear Query Buffer");
|
||||
o12["Tooltip"] =
|
||||
t("Automatically Clear Query Buffer After Playback");
|
||||
if (!pUser || pUser->AutoClearQueryBuffer()) {
|
||||
o12["Checked"] = "true";
|
||||
}
|
||||
@@ -1540,8 +1552,8 @@ class CWebAdminMod : public CModule {
|
||||
|
||||
CString sUsername = WebSock.GetParam("user");
|
||||
if (!pUser && CZNC::Get().FindUser(sUsername)) {
|
||||
WebSock.PrintErrorPage("Invalid Submission [User " + sUsername +
|
||||
" already exists]");
|
||||
WebSock.PrintErrorPage(
|
||||
f("Invalid Submission: User {1} already exists")(sUsername));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1552,7 +1564,7 @@ class CWebAdminMod : public CModule {
|
||||
}
|
||||
|
||||
CString sErr;
|
||||
CString sAction;
|
||||
CString sConfigErrorMsg;
|
||||
|
||||
if (!pUser) {
|
||||
CString sClone = WebSock.GetParam("clone");
|
||||
@@ -1563,22 +1575,24 @@ class CWebAdminMod : public CModule {
|
||||
// Add User Submission
|
||||
if (!CZNC::Get().AddUser(pNewUser, sErr)) {
|
||||
delete pNewUser;
|
||||
WebSock.PrintErrorPage("Invalid submission [" + sErr + "]");
|
||||
WebSock.PrintErrorPage(f("Invalid submission: {1}")(sErr));
|
||||
return true;
|
||||
}
|
||||
|
||||
pUser = pNewUser;
|
||||
sAction = "added";
|
||||
sConfigErrorMsg =
|
||||
t("User was added, but config file was not written");
|
||||
} else {
|
||||
// Edit User Submission
|
||||
if (!pUser->Clone(*pNewUser, sErr, false)) {
|
||||
delete pNewUser;
|
||||
WebSock.PrintErrorPage("Invalid Submission [" + sErr + "]");
|
||||
WebSock.PrintErrorPage(f("Invalid submission: {1}")(sErr));
|
||||
return true;
|
||||
}
|
||||
|
||||
delete pNewUser;
|
||||
sAction = "edited";
|
||||
sConfigErrorMsg =
|
||||
t("User was edited, but config file was not written");
|
||||
}
|
||||
|
||||
CTemplate TmplMod;
|
||||
@@ -1589,8 +1603,7 @@ class CWebAdminMod : public CModule {
|
||||
}
|
||||
|
||||
if (!CZNC::Get().WriteConfig()) {
|
||||
WebSock.PrintErrorPage("User " + sAction +
|
||||
", but config was not written");
|
||||
WebSock.PrintErrorPage(sConfigErrorMsg);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1608,7 +1621,7 @@ class CWebAdminMod : public CModule {
|
||||
bool ListUsersPage(CWebSock& WebSock, CTemplate& Tmpl) {
|
||||
std::shared_ptr<CWebSession> spSession = WebSock.GetSession();
|
||||
const map<CString, CUser*>& msUsers = CZNC::Get().GetUserMap();
|
||||
Tmpl["Title"] = "Manage Users";
|
||||
Tmpl["Title"] = t("Manage Users");
|
||||
Tmpl["Action"] = "listusers";
|
||||
|
||||
for (const auto& it : msUsers) {
|
||||
@@ -1629,7 +1642,7 @@ class CWebAdminMod : public CModule {
|
||||
|
||||
bool TrafficPage(CWebSock& WebSock, CTemplate& Tmpl) {
|
||||
std::shared_ptr<CWebSession> spSession = WebSock.GetSession();
|
||||
Tmpl["Title"] = "Traffic Info";
|
||||
Tmpl["Title"] = t("Traffic Info");
|
||||
Tmpl["Uptime"] = CZNC::Get().GetUptime();
|
||||
|
||||
const map<CString, CUser*>& msUsers = CZNC::Get().GetUserMap();
|
||||
@@ -1737,7 +1750,7 @@ class CWebAdminMod : public CModule {
|
||||
eAddr = ADDR_IPV6ONLY;
|
||||
} else {
|
||||
WebSock.GetSession()->AddError(
|
||||
"Choose either IPv4 or IPv6 or both.");
|
||||
t("Choose either IPv4 or IPv6 or both."));
|
||||
return SettingsPage(WebSock, Tmpl);
|
||||
}
|
||||
}
|
||||
@@ -1754,7 +1767,7 @@ class CWebAdminMod : public CModule {
|
||||
eAccept = CListener::ACCEPT_HTTP;
|
||||
} else {
|
||||
WebSock.GetSession()->AddError(
|
||||
"Choose either IRC or Web or both.");
|
||||
t("Choose either IRC or HTTP or both."));
|
||||
return SettingsPage(WebSock, Tmpl);
|
||||
}
|
||||
}
|
||||
@@ -1767,7 +1780,7 @@ class CWebAdminMod : public CModule {
|
||||
}
|
||||
if (!CZNC::Get().WriteConfig()) {
|
||||
WebSock.GetSession()->AddError(
|
||||
"Port changed, but config was not written");
|
||||
t("Port was changed, but config file was not written"));
|
||||
}
|
||||
} else {
|
||||
WebSock.GetSession()->AddError(sMessage);
|
||||
@@ -1793,7 +1806,7 @@ class CWebAdminMod : public CModule {
|
||||
if (bIPv6) {
|
||||
eAddr = ADDR_IPV6ONLY;
|
||||
} else {
|
||||
WebSock.GetSession()->AddError("Invalid request.");
|
||||
WebSock.GetSession()->AddError(t("Invalid request."));
|
||||
return SettingsPage(WebSock, Tmpl);
|
||||
}
|
||||
}
|
||||
@@ -1803,11 +1816,11 @@ class CWebAdminMod : public CModule {
|
||||
CZNC::Get().DelListener(pListener);
|
||||
if (!CZNC::Get().WriteConfig()) {
|
||||
WebSock.GetSession()->AddError(
|
||||
"Port changed, but config was not written");
|
||||
t("Port was changed, but config file was not written"));
|
||||
}
|
||||
} else {
|
||||
WebSock.GetSession()->AddError(
|
||||
"The specified listener was not found.");
|
||||
t("The specified listener was not found."));
|
||||
}
|
||||
|
||||
return SettingsPage(WebSock, Tmpl);
|
||||
@@ -1817,7 +1830,7 @@ class CWebAdminMod : public CModule {
|
||||
Tmpl.SetFile("settings.tmpl");
|
||||
if (!WebSock.GetParam("submitted").ToUInt()) {
|
||||
Tmpl["Action"] = "settings";
|
||||
Tmpl["Title"] = "Settings";
|
||||
Tmpl["Title"] = t("Global Settings");
|
||||
Tmpl["StatusPrefix"] = CZNC::Get().GetStatusPrefix();
|
||||
Tmpl["MaxBufferSize"] = CString(CZNC::Get().GetMaxBufferSize());
|
||||
Tmpl["ConnectDelay"] = CString(CZNC::Get().GetConnectDelay());
|
||||
@@ -1840,7 +1853,7 @@ class CWebAdminMod : public CModule {
|
||||
l["Port"] = CString(pListener->GetPort());
|
||||
l["BindHost"] = pListener->GetBindHost();
|
||||
|
||||
l["IsWeb"] = CString(pListener->GetAcceptType() !=
|
||||
l["IsHTTP"] = CString(pListener->GetAcceptType() !=
|
||||
CListener::ACCEPT_IRC);
|
||||
l["IsIRC"] = CString(pListener->GetAcceptType() !=
|
||||
CListener::ACCEPT_HTTP);
|
||||
@@ -1999,14 +2012,14 @@ class CWebAdminMod : public CModule {
|
||||
if (!CZNC::Get().GetModules().LoadModule(
|
||||
sModName, sArgs, CModInfo::GlobalModule, nullptr,
|
||||
nullptr, sModRet)) {
|
||||
sModLoadError = "Unable to load module [" + sModName +
|
||||
"] [" + sModRet + "]";
|
||||
sModLoadError = f("Unable to load module [{1}]: {2}")(
|
||||
sModName, sModRet);
|
||||
}
|
||||
} else if (pMod->GetArgs() != sArgs) {
|
||||
if (!CZNC::Get().GetModules().ReloadModule(
|
||||
sModName, sArgs, nullptr, nullptr, sModRet)) {
|
||||
sModLoadError = "Unable to reload module [" + sModName +
|
||||
"] [" + sModRet + "]";
|
||||
sModLoadError = f("Unable to reload module [{1}]: {2}")(
|
||||
sModName, sModRet);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2034,7 +2047,7 @@ class CWebAdminMod : public CModule {
|
||||
|
||||
if (!CZNC::Get().WriteConfig()) {
|
||||
WebSock.GetSession()->AddError(
|
||||
"Settings changed, but config was not written");
|
||||
t("Settings were changed, but config file was not written"));
|
||||
}
|
||||
|
||||
WebSock.Redirect(GetWebPath() + "settings");
|
||||
|
||||
+44
-4
@@ -1,3 +1,47 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: webskins/_default_/tmpl/index.tmpl:6
|
||||
msgid "Welcome to ZNC's web interface!"
|
||||
msgstr ""
|
||||
|
||||
#: webskins/_default_/tmpl/index.tmpl:11
|
||||
msgid ""
|
||||
"No Web-enabled modules have been loaded. Load modules from IRC (“<code>/msg "
|
||||
"*status help</code>” and “<code>/msg *status loadmod <module></"
|
||||
"code>”). Once you have loaded some Web-enabled modules, the menu will expand."
|
||||
msgstr ""
|
||||
|
||||
#: webskins/_default_/tmpl/InfoBar.tmpl:2
|
||||
msgid "-Guest-"
|
||||
msgstr ""
|
||||
|
||||
#: webskins/_default_/tmpl/InfoBar.tmpl:5
|
||||
msgid "Logged in as: {1} (from {2})"
|
||||
msgstr ""
|
||||
|
||||
#: webskins/_default_/tmpl/Menu.tmpl:4
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#: webskins/_default_/tmpl/Menu.tmpl:7
|
||||
msgid "Global Modules"
|
||||
msgstr ""
|
||||
|
||||
#: webskins/_default_/tmpl/Menu.tmpl:20
|
||||
msgid "User Modules"
|
||||
msgstr ""
|
||||
|
||||
#: webskins/_default_/tmpl/Menu.tmpl:35
|
||||
msgid "Network Modules ({1})"
|
||||
msgstr ""
|
||||
|
||||
#: webskins/_default_/tmpl/LoginBar.tmpl:3
|
||||
msgid "Logout"
|
||||
msgstr ""
|
||||
|
||||
#: ClientCommand.cpp:51
|
||||
msgid "You must be connected with a network to use this command"
|
||||
msgstr ""
|
||||
@@ -17,7 +61,3 @@ msgstr ""
|
||||
#: ClientCommand.cpp:79
|
||||
msgid "No nicks on [{1}]"
|
||||
msgstr ""
|
||||
|
||||
#: webskins/_default_/tmpl/LoginBar.tmpl:3
|
||||
msgid "Logout"
|
||||
msgstr ""
|
||||
|
||||
Reference in New Issue
Block a user