Added Webskin "znc-ation"

This commit is contained in:
Jens-Andre Koch
2012-03-23 12:20:45 +01:00
parent 2f853bee61
commit 92ec938150
49 changed files with 1137 additions and 100 deletions
+1
View File
@@ -31,5 +31,6 @@ Brian Campbell (bcampbell@splafinga.com)
Joshua M. Clulow (http://sysmgr.org)
evaryont <colin@evaryont.me>
Michael "adgar" Edgar <adgar@carboni.ca>
Jens-Andre "vain" Koch <jakoch@web.de>
If you did something useful and want to be listed here too, add yourself and submit the patch.
+6
View File
@@ -217,6 +217,8 @@ public:
const CString& GetPath() const { return m_sPath; }
const CString& GetDescription() const { return m_sDescription; }
const CString& GetWikiPage() const { return m_sWikiPage; }
const CString& GetArgsHelpText() const { return m_sArgsHelpText; }
bool GetHasArgs() const { return m_bHasArgs; }
ModLoader GetLoader() const { return m_fLoader; }
EModuleType GetDefaultType() const { return m_eDefaultType; }
// !Getters
@@ -226,6 +228,8 @@ public:
void SetPath(const CString& s) { m_sPath = s; }
void SetDescription(const CString& s) { m_sDescription = s; }
void SetWikiPage(const CString& s) { m_sWikiPage = s; }
void SetArgsHelpText(const CString& s) { m_sArgsHelpText = s; }
void SetHasArgs(bool b = false) { m_bHasArgs = b; }
void SetLoader(ModLoader fLoader) { m_fLoader = fLoader; }
void SetDefaultType(EModuleType eType) { m_eDefaultType = eType; }
// !Setters
@@ -237,6 +241,8 @@ protected:
CString m_sPath;
CString m_sDescription;
CString m_sWikiPage;
CString m_sArgsHelpText;
bool m_bHasArgs;
ModLoader m_fLoader;
};
+2
View File
@@ -91,6 +91,8 @@ private:
template<> void TModInfo<CAutoReplyMod>(CModInfo& Info) {
Info.SetWikiPage("autoreply");
Info.AddType(CModInfo::NetworkModule);
Info.SetHasArgs(true);
Info.SetArgsHelpText("You might specify a reply text. It is used when automatically answering queries, if you are not connected to ZNC.");
}
USERMODULEDEFS(CAutoReplyMod, "Reply to queries when you are away")
+2
View File
@@ -189,6 +189,8 @@ void CAwayNickTimer::RunJob() {
template<> void TModInfo<CAwayNickMod>(CModInfo& Info) {
Info.SetWikiPage("awaynick");
Info.SetHasArgs(true);
Info.SetArgsHelpText("This will be your nickname while you are away. Examples: nick_off or zzz_nick.");
}
NETWORKMODULEDEFS(CAwayNickMod, "Change your nick while you are away")
+2
View File
@@ -168,6 +168,8 @@ private:
template<> void TModInfo<CBlockUser>(CModInfo& Info) {
Info.SetWikiPage("blockuser");
Info.SetHasArgs(true);
Info.SetArgsHelpText("Enter one or more user names. Seperate them by spaces.");
}
GLOBALMODULEDEFS(CBlockUser, "Block certain users from logging in")
-1
View File
@@ -76,7 +76,6 @@ private:
template<> void TModInfo<CChanSaverMod>(CModInfo& Info) {
Info.SetWikiPage("chansaver");
Info.AddType(CModInfo::NetworkModule);
}
USERMODULEDEFS(CChanSaverMod, "Keep config up-to-date when user joins/parts")
+1 -1
View File
@@ -14,7 +14,7 @@
<div class="sectionbody">
<div class="subsection full">
<div class="inputlabel">PEM File:</div>
<div><textarea name="cert" style="height: 300px;"></textarea></div>
<textarea name="cert" style="height: 300px;"></textarea>
</div>
<div class="subsection submitline">
<input type="submit" name="add" value="Update" />
+1 -1
View File
@@ -8,7 +8,7 @@
<div class="sectionbody">
<div class="subsection full">
<div class="inputlabel">Key:</div>
<div><input type="text" name="key" size="40" /></div>
<input type="text" name="key" size="40" />
</div>
<div class="subsection submitline">
<input type="submit" name="add" value="Add Key" />
@@ -2,7 +2,7 @@
<div class="sectionbody">
<div class="subsection">
<div class="inputlabel">Last login time:</div>
<div><p><? VAR LastSeen DEFAULT="- unknown -" ?></p></div>
<p><? VAR LastSeen DEFAULT="- unknown -" ?></p>
</div>
<div style="clear:both;"></div>
</div>
+2 -2
View File
@@ -8,11 +8,11 @@
<div class="sectionbody">
<div class="subsection third">
<div class="inputlabel">Key:</div>
<div><input type="text" name="key" size="8" /></div>
<input type="text" name="key" size="8" />
</div>
<div class="subsection full">
<div class="inputlabel">Note:</div>
<div><input type="text" name="note" size="40" /></div>
<input type="text" name="note" size="40" />
</div>
<div class="subsection submitline">
<input type="submit" name="add" value="Add Note" />
+2 -2
View File
@@ -8,9 +8,9 @@
<div class="sectionbody">
<div class="subsection full">
<div class="inputlabel">Perform commands:</div>
<div><textarea name="perform" cols="70" rows="5" class="monospace"><? LOOP PerformLoop ?><? VAR Perform ?>
<textarea name="perform" cols="70" rows="5" class="monospace"><? LOOP PerformLoop ?><? VAR Perform ?>
<? ENDLOOP ?>
</textarea></div>
</textarea>
<br /><span class="info">Commands sent to the IRC server on connect, one per line.</span>
</div>
<div class="subsection submitline">
+7 -9
View File
@@ -10,26 +10,24 @@
<div class="sectionbody">
<div class="subsection third">
<div class="inputlabel">User:</div>
<div><select name="user">
<select name="user">
<? LOOP UserLoop?>
<option value="<? VAR Username ESC=HTML ?>"><? VAR Username ESC=HTML ?></option>
<? ENDLOOP ?>
</select></div>
</select>
</div>
<div class="subsection third">
<div class="inputlabel">Send to:</div>
<div>
<select name="send_to">
<option value="client"<? IF to_client ?> selected="yes"<? ENDIF ?>>Client</option>
<option value="server"<? IF to_server ?> selected="yes"<? ENDIF ?>>Server</option>
</select>
</div>
<select name="send_to">
<option value="client"<? IF to_client ?> selected="yes"<? ENDIF ?>>Client</option>
<option value="server"<? IF to_server ?> selected="yes"<? ENDIF ?>>Server</option>
</select>
</div>
<div class="subsection full">
<div class="inputlabel">Line:</div>
<div><input type="text" name="line" value="<? VAR line ?>" /></div>
<input type="text" name="line" value="<? VAR line ?>" />
</div>
<div class="subsection submitline">
@@ -1,12 +1,12 @@
<div class="sectionbg">
<div class="sectionbody">
<div class="subsection">
<input type="hidden" name="embed_stickychan_presented" value="1">
<div class="checkbox">
<input type="checkbox" name="embed_stickychan_sticky" id="opt_embed_stickychan_sticky" value="1"<? IF Sticky ?> checked="checked"<? ENDIF ?> />
<label for="opt_embed_stickychan_sticky">Channel is sticky</label>
</div>
</div>
<div style="clear:both;"></div>
<div class="subsection">
<input type="hidden" name="embed_stickychan_presented" value="1">
<div class="checkbox">
<input type="checkbox" name="embed_stickychan_sticky" id="opt_embed_stickychan_sticky" value="1"<? IF Sticky ?> checked="checked"<? ENDIF ?> />
<label for="opt_embed_stickychan_sticky">Channel is sticky</label>
</div>
</div>
<div style="clear:both;"></div>
</div>
</div>
@@ -14,23 +14,27 @@
<? IF !Edit ?>
<div class="subsection half">
<div class="inputlabel">Channel Name:</div>
<div><input type="text" name="name" value="" /></div>
<input type="text" name="name" value=""
title="The channel name." />
</div>
<? ENDIF ?>
<div class="subsection">
<div class="inputlabel">Key:</div>
<div><input type="text" name="key" value="<? VAR Key ?>" size="10" /></div>
<input type="text" name="key" value="<? VAR Key ?>" size="10"
title="The password of the channel, if there is one." />
</div>
<div class="subsection">
<div class="inputlabel">Buffer Count:</div>
<div><input type="number" name="buffercount" value="<? VAR BufferCount ?>" size="10" min="0" /></div>
<input type="number" name="buffercount" value="<? VAR BufferCount ?>" size="10" min="0"
title="The buffer count." />
</div>
<div class="subsection">
<div class="inputlabel">Default Modes:</div>
<div><input type="text" name="defmodes" value="<? VAR DefModes ?>" size="10" /></div>
<input type="text" name="defmodes" value="<? VAR DefModes ?>" size="10"
title="The default modes of the channel." />
</div>
</div>
@@ -70,4 +74,4 @@
</div>
</form>
<? INC Footer.tmpl ?>
<? INC Footer.tmpl ?>
@@ -20,28 +20,31 @@
<? IF !Edit ?>
<div class="subsection">
<div class="inputlabel">Network Name:</div>
<div>
<input type="text" name="network" value="<? VAR Name ?>" class="half" maxlength="128" />
<input type="text" name="network" value="<? VAR Name ?>" class="half" maxlength="128"
title="The name of the IRC network." />
</div>
</div>
<? ENDIF ?>
<div class="subsection">
<div class="inputlabel">Nickname:</div>
<div><input type="text" name="nick" value="<? VAR Nick ?>" class="half" maxlength="128" /></div>
<input type="text" name="nick" value="<? VAR Nick ?>" class="half" maxlength="128"
title="Your nickname on IRC." />
</div>
<div class="subsection">
<div class="inputlabel">Alt. Nickname:</div>
<div><input type="text" name="altnick" value="<? VAR AltNick ?>" class="half" maxlength="128" /></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." />
</div>
<div style="clear: both;"></div>
<div class="subsection">
<div class="inputlabel">Ident:</div>
<div><input type="text" name="ident" value="<? VAR Ident ?>" class="half" maxlength="128" /></div>
<input type="text" name="ident" value="<? VAR Ident ?>" class="half" maxlength="128"
title="Your ident." />
</div>
<div class="subsection">
<div class="inputlabel">Realname:</div>
<div><input type="text" name="realname" value="<? VAR RealName ?>" class="full" maxlength="256" /></div>
<input type="text" name="realname" value="<? VAR RealName ?>" class="full" maxlength="256"
title="Your real name." />
</div>
<div class="subsection">
@@ -76,6 +79,8 @@
<div class="inputlabel">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."
onchange="floodprotection_change();"
<? IF FloodProtection ?>checked="checked"<? ENDIF ?> />
<label for="floodprotection_checkbox">Enabled</label>
@@ -83,14 +88,18 @@
</div>
<div class="subsection">
<div class="inputlabel">Flood protection rate:</div>
<div><input type="number" name="floodrate" min="0.3" step="0.05" id="floodrate"
<? IF FloodProtection ?> value="<? VAR FloodRate ?>" <? ELSE ?> value="1.00" <? ENDIF ?> /> seconds per line</div>
<input type="number" name="floodrate" min="0.3" step="0.05" id="floodrate"
title="The number of seconds per line."
<? IF FloodProtection ?> value="<? VAR FloodRate ?>" <? ELSE ?> value="1.00" disabled="disabled" <? ENDIF ?>
/> seconds per line
</div>
<div class="subsection">
<div class="inputlabel">Flood protection burst:</div>
<div><input type="number" name="floodburst" min="1" id="floodburst"
<? IF FloodProtection ?> value="<? VAR FloodBurst ?>" <? ELSE ?> value="4" <? ENDIF ?> /> lines can be send immediately</div>
<input type="number" name="floodburst" min="1" id="floodburst"
title="Defines the number of lines, which can immediately be send."
<? IF FloodProtection ?> value="<? VAR FloodBurst ?>" <? ELSE ?> value="4" disabled="disabled" <? ENDIF ?>
/> lines can be send immediately
</div>
<script type="text/javascript">floodprotection_change();</script>
<div style="clear: both;"></div>
+48 -28
View File
@@ -10,7 +10,7 @@
<div class="sectionbody">
<div class="subsection">
<div class="inputlabel">Username:</div>
<div>
<? IF Clone ?>
<input type="hidden" name="clone" value="<? VAR CloneUsername ?>" />
<? ENDIF ?>
@@ -18,23 +18,26 @@
<input type="hidden" name="user" value="<? VAR Username ?>" />
<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" />
<input type="text" name="user" value="<? VAR Username ?>" class="half" maxlength="128"
title="Please enter a username." />
<? ENDIF ?>
</div>
</div>
<div class="subsection">
<div class="inputlabel">Password:</div>
<div><input type="password" name="password" class="half" /></div>
<input type="password" name="password" class="half"
title="Please enter a password." />
</div>
<div class="subsection">
<div class="inputlabel">Confirm password:</div>
<div><input type="password" name="password2" class="half" /></div>
<input type="password" name="password2" class="half"
title="Please re-type the above password." />
</div>
<div class="subsection half">
<div class="inputlabel">Allowed IPs:</div>
<div><textarea name="allowedips" cols="70" rows="5"><? LOOP AllowedHostLoop ?><? VAR Host ?>
<textarea name="allowedips" cols="70" rows="5"><? LOOP AllowedHostLoop ?><? VAR Host ?>
<? ENDLOOP ?>
</textarea></div>
</textarea>
<br /><span class="info">Leave empty to allow connections from all IPs.<br />
Otherwise, one entry per line, wildcards * and ? are available.</span>
</div>
@@ -52,25 +55,30 @@
<div class="sectionbody">
<div class="subsection">
<div class="inputlabel">Nickname:</div>
<div><input type="text" name="nick" value="<? VAR Nick ?>" class="half" maxlength="128" /></div>
<input type="text" name="nick" value="<? VAR Nick ?>" class="half" maxlength="128"
title="This will be your nickname on IRC." />
</div>
<div class="subsection">
<div class="inputlabel">Alt. Nickname:</div>
<div><input type="text" name="altnick" value="<? VAR AltNick ?>" class="half" maxlength="128" /></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." />
</div>
<div style="clear: both;"></div>
<div class="subsection">
<div class="inputlabel">Ident:</div>
<div><input type="text" name="ident" value="<? VAR Ident ?>" class="half" maxlength="128" /></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." />
</div>
<div class="subsection">
<div class="inputlabel">StatusPrefix:</div>
<div><input type="text" name="statusprefix" value="<? VAR StatusPrefix ?>" class="half" maxlength="5" /></div>
<input type="text" name="statusprefix" value="<? VAR StatusPrefix ?>" class="half" maxlength="5"
title="This defines the prefix for the status and module queries." />
</div>
<div style="clear: both;"></div>
<div class="subsection">
<div class="inputlabel">Realname:</div>
<div><input type="text" name="realname" value="<? VAR RealName ?>" class="full" maxlength="256" /></div>
<input type="text" name="realname" value="<? VAR RealName ?>" class="full" maxlength="256"
title="The real name of the user." />
</div>
<div style="clear: both;"></div>
@@ -98,7 +106,8 @@
<div class="subsection">
<div class="inputlabel">Quit Message:</div>
<div><input type="text" name="quitmsg" value="<? VAR QuitMsg ?>" class="full" maxlength="256" /></div>
<input type="text" name="quitmsg" value="<? VAR QuitMsg ?>" class="full" maxlength="256"
title="You may define a Message shown, when you quit IRC." />
</div>
<div style="clear: both;"></div>
</div>
@@ -161,7 +170,13 @@
<input type="checkbox" name="loadmod" id="lm_<? VAR Name ?>" value="<? VAR Name ?>"<? IF Checked ?> checked="checked"<? ENDIF ?><? IF Disabled ?> disabled="disabled"<? ENDIF ?> /><label for="lm_<? VAR Name ?>"> <? IF Wiki ?><a href="http://wiki.znc.in/<? VAR Wiki ?>"><? VAR Name ?></a> <? ELSE ?> <? VAR Name ?> <? ENDIF ?></label>
</td>
<td class="mod_args">
<? IF Disabled ?><? VAR Args ?><? ELSE ?><input class="third" type="text" name="modargs_<? VAR Name ?>" value="<? VAR Args ?>" /><? ENDIF ?>
<? IF Disabled ?>
<? VAR Args ?>
<? ELSE ?>
<input class="third" type="text" name="modargs_<? VAR Name ?>" value="<? VAR Args ?>"
<? IF !HasArgs ?> disabled="disabled"<? ENDIF ?>
<? IF ArgsHelpText ?> title="<? VAR ArgsHelpText ?>"<? ENDIF ?> />
<? ENDIF ?>
</td>
<td class="mod_descr"><? VAR Description ?></td>
</tr>
@@ -179,12 +194,15 @@
<div class="sectionbody">
<div class="subsection third">
<div class="inputlabel">Modes:</div>
<div><input type="text" name="chanmodes" value="<? VAR DefaultChanModes ?>" maxlength="32" /></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>
</div>
<div class="subsection third">
<div class="inputlabel">Buffer Size:</div>
<div><input type="number" name="bufsize" value="<? VAR BufferCount ?>" min="0" /></div>
<input type="number" name="bufsize" value="<? VAR BufferCount ?>" min="0"
title="This is the amount of lines that the playback buffer will store before dropping off the oldest line.
The buffers are stored in the memory by default." />
<br /><span class="info">Empty = use standard value</span>
</div>
</div>
@@ -213,22 +231,24 @@
<div class="sectionbody">
<div class="subsection">
<div class="inputlabel">Timestamp Format:</div>
<div><input type="text" name="timestampformat" value="<? VAR TimestampFormat ?>" class="full" /></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]." />
</div>
<div class="subsection">
<div class="inputlabel">Timezone:</div>
<div>
<input type="text" name="timezone" value="<? VAR Timezone ?>" class="half" list="timezone_list" />
<datalist id="timezone_list">
<? LOOP TZLoop ?>
<option value="<? VAR TZ ?>"/>
<? ENDLOOP ?>
</datalist>
</div>
<input type="text" name="timezone" value="<? VAR Timezone ?>" class="half" list="timezone_list"
title="Select your timezone." />
<datalist id="timezone_list">
<? LOOP TZLoop ?>
<option value="<? VAR TZ ?>"/>
<? ENDLOOP ?>
</datalist>
</div>
<div class="subsection">
<div class="inputlabel">Join Tries:</div>
<div><input type="number" name="jointries" value="<? VAR JoinTries ?>" class="third" min="0" /></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." />
</div>
<div class="subsection half">
<div class="inputlabel">CTCP Replies:</div>
@@ -239,7 +259,7 @@
</div>
<div class="subsection">
<div class="inputlabel">Skin:</div>
<div>
<? IF SkinLoop ROWS > 1 ?>
<select name="skin">
<option value="">- Global -</option>
@@ -250,7 +270,7 @@
<? ELSE ?>
No other skins found
<? ENDIF ?>
</div>
</div>
<div style="clear: both;"></div>
</div>
+3 -5
View File
@@ -1,10 +1,8 @@
<? INC Header.tmpl ?>
<div class="textsection">
<p>Welcome to the ZNC webadmin module. All changes you make will be in effect immediately after
you submitted them.</p>
<p>Welcome to the ZNC webadmin module.<br/>
All changes you make will be in effect immediately after you submitted them.</p>
</div>
<? INC Footer.tmpl ?>
<? INC Footer.tmpl ?>
+44 -25
View File
@@ -9,7 +9,7 @@
<div class="sectionbg">
<div class="sectionbody">
<div class="subsection">
<div>
<table>
<thead>
<tr>
@@ -36,9 +36,9 @@
<? ENDLOOP ?>
</tbody>
</table>
</div>
</div>
<div style="clear: both;"></div>
</div>
</div>
</div>
@@ -49,70 +49,78 @@
<div class="sectionbody">
<div class="subsection">
<div class="inputlabel">Skin:</div>
<div>
<select name="skin">
<? LOOP SkinLoop ?>
<option value="<? VAR Name ?>"<? IF Checked ?> selected="selected"<? ENDIF ?>><? IF Name == "_default_" ?>Default<? ELSE ?><? VAR Name ?><? ENDIF ?></option>
<? ENDLOOP ?>
</select>
</div>
</div>
<div style="clear: both;"></div>
<div class="subsection third">
<div class="inputlabel">Status Prefix:</div>
<div><input type="text" name="statusprefix" value="<? VAR StatusPrefix ?>" /></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>
</div>
<div style="clear: both;"></div>
<div class="subsection half">
<div class="inputlabel">Maximum Buffer Size:</div>
<div><input type="text" name="maxbufsize" value="<? VAR MaxBufferSize ?>" /></div>
<input type="text" name="maxbufsize" value="<? VAR MaxBufferSize ?>"
title="Sets the global Max Buffer Size a user can have."/>
</div>
<div style="clear: both;"></div>
<div class="subsection half">
<div class="inputlabel">Connect Delay:</div>
<div><input type="text" name="connectdelay" value="<? VAR ConnectDelay ?>" /></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>
<div style="clear: both;"></div>
<div class="subsection half">
<div class="inputlabel">Server Throttle:</div>
<div><input type="text" name="serverthrottle" value="<? VAR ServerThrottle ?>" /></div>
<input type="text" name="serverthrottle" value="<? VAR ServerThrottle ?>"
title="The time between two connect attempts to the same hostname." />
</div>
<div style="clear: both;"></div>
<div class="subsection half">
<div class="inputlabel">Anonymous IP Limit:</div>
<div><input type="text" name="anoniplimit" value="<? VAR AnonIPLimit ?>" /></div>
<input type="text" name="anoniplimit" value="<? VAR AnonIPLimit ?>"
title="Limits the number of unidentified connections per IP." />
</div>
<div style="clear: both;"></div>
<div class="subsection">
<div class="inputlabel">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>
</div>
<div style="clear: both;"></div>
<div class="subsection twothird">
<div class="inputlabel">MOTD:</div>
<div><textarea name="motd" cols="70" rows="5" class="monospace"><? LOOP MOTDLoop ?><? VAR Line ?>
<textarea name="motd" cols="70" rows="5" class="monospace"><? LOOP MOTDLoop ?><? VAR Line ?>
<? ENDLOOP ?>
</textarea></div>
</textarea>
<br /><span class="info">"Message of the Day", sent to all ZNC users on connect.</span>
</div>
<div class="subsection twothird">
<div class="inputlabel">BindHosts:</div>
<div><textarea name="bindhosts" cols="70" rows="8"><? LOOP BindHostLoop ?><? VAR BindHost ?>
<textarea name="bindhosts" cols="70" rows="8"><? LOOP BindHostLoop ?><? VAR BindHost ?>
<? ENDLOOP ?>
</textarea></div>
</textarea>
<br /><span class="info">One host name or IP entry per line.</span>
</div>
<div style="clear: both;"></div>
</div>
</div>
</div>
@@ -132,8 +140,19 @@
<tbody>
<? LOOP ModuleLoop ?>
<tr class="<? IF __EVEN__ ?>evenrow<? ELSE ?>oddrow<? ENDIF ?>">
<td class="mod_name"><input type="checkbox" name="loadmod" id="lm_<? VAR Name ?>" value="<? VAR Name ?>"<? IF Checked ?> checked="checked"<? ENDIF ?><? IF Disabled ?> disabled="disabled"<? ENDIF ?> /><label for="lm_<? VAR Name ?>"> <? IF Wiki ?> <a href="http://wiki.znc.in/<? VAR Wiki ?>"><? VAR Name ?></a> <? ELSE ?> <? VAR Name ?> <? ENDIF ?></label></td>
<td class="mod_args"><input type="text" name="modargs_<? VAR Name ?>" value="<? VAR Args ?>" /></td>
<td class="mod_name">
<input type="checkbox" name="loadmod" id="lm_<? VAR Name ?>" value="<? VAR Name ?>"
<? IF Checked ?> checked="checked"<? ENDIF ?>
<? IF Disabled ?> disabled="disabled"<? ENDIF ?> />
<label for="lm_<? VAR Name ?>">
<? IF Wiki ?><a href="http://wiki.znc.in/<? VAR Wiki ?>"><? VAR Name ?></a>
<? ELSE ?> <? VAR Name ?> <? ENDIF ?></label>
</td>
<td class="mod_args">
<input type="text" name="modargs_<? VAR Name ?>" value="<? VAR Args ?>"
<? IF !HasArgs ?> disabled="disabled"<? ENDIF ?>
<? IF ArgsHelpText ?> title="<? VAR ArgsHelpText ?>"<? ENDIF ?> />
</td>
<td class="mod_descr"><? VAR Description ?></td>
</tr>
<? ENDLOOP ?>
@@ -148,4 +167,4 @@
</div>
</form>
<? INC Footer.tmpl ?>
<? INC Footer.tmpl ?>
+2
View File
@@ -97,6 +97,8 @@ private:
template<> void TModInfo<CFailToBanMod>(CModInfo& Info) {
Info.SetWikiPage("fail2ban");
Info.SetHasArgs(true);
Info.SetArgsHelpText("Please enter the time in minutes for the IP banning and the number of failed logins before any action is taken.");
}
GLOBALMODULEDEFS(CFailToBanMod, "Block IPs for some time after a failed login")
+2
View File
@@ -110,6 +110,8 @@ public:
template<> void TModInfo<CRejoinMod>(CModInfo& Info) {
Info.SetWikiPage("kickrejoin");
Info.SetHasArgs(true);
Info.SetArgsHelpText("Please enter the number of seconds to wait before rejoining.");
}
NETWORKMODULEDEFS(CRejoinMod, "Autorejoin on kick")
+2
View File
@@ -472,6 +472,8 @@ void CModTclStartTimer::RunJob() {
template<> void TModInfo<CModTcl>(CModInfo& Info) {
Info.SetWikiPage("modtcl");
Info.SetHasArgs(true);
Info.SetArgsHelpText("The argument is the number of seconds to wait before rejoining.");
}
NETWORKMODULEDEFS(CModTcl, "Loads Tcl scripts as ZNC modules")
+2
View File
@@ -162,6 +162,8 @@ public:
template<> void TModInfo<CNickServ>(CModInfo& Info) {
Info.SetWikiPage("nickserv");
Info.SetHasArgs(true);
Info.SetArgsHelpText("Please enter your nickserv password.");
}
NETWORKMODULEDEFS(CNickServ, "Auths you with NickServ")
+2
View File
@@ -607,6 +607,8 @@ private:
template<> void TModInfo<CPartylineMod>(CModInfo& Info) {
Info.SetWikiPage("partyline");
Info.SetHasArgs(true);
Info.SetArgsHelpText("You may enter a list of channels the user joins, when entering the internal partyline.");
}
GLOBALMODULEDEFS(CPartylineMod, "Internal channels and queries for users connected to znc")
+2
View File
@@ -486,6 +486,8 @@ private:
template<> void TModInfo<CQModule>(CModInfo& Info) {
Info.SetWikiPage("Q");
Info.SetHasArgs(true);
Info.SetArgsHelpText("Please provide your username and password for Q.");
}
NETWORKMODULEDEFS(CQModule, "Auths you with QuakeNet's Q bot.")
+2
View File
@@ -243,6 +243,8 @@ public:
template<> void TModInfo<CSampleMod>(CModInfo& Info) {
Info.SetWikiPage("sample");
Info.SetHasArgs(true);
Info.SetArgsHelpText("Please describe the arguments used by your module in one or two sentences.");
}
USERMODULEDEFS(CSampleMod, "To be used as a sample for writing modules")
+3 -1
View File
@@ -217,6 +217,8 @@ void CSimpleAwayJob::RunJob() {
template<> void TModInfo<CSimpleAway>(CModInfo& Info) {
Info.SetWikiPage("simple_away");
Info.SetHasArgs(true);
Info.SetArgsHelpText("Please enter 2 or 3 arguments, like -notimer awaymessage or -timer 5 awaymessage.");
}
NETWORKMODULEDEFS(CSimpleAway, "Auto away when last client disconnects")
NETWORKMODULEDEFS(CSimpleAway, "This module will automatically set you away on IRC while you are disconnected from the bouncer.")
+33
View File
@@ -654,6 +654,17 @@ public:
l["Description"] = Info.GetDescription();
l["Wiki"] = Info.GetWikiPage();
if(Info.GetHasArgs())
{
l["HasArgs"] = "true";
}
else
{
l["HasArgs"] = "false";
}
l["ArgsHelpText"] = Info.GetArgsHelpText();
if (pNetwork) {
CModule *pModule = pNetwork->GetModules().FindModule(Info.GetName());
if (pModule) {
@@ -1014,6 +1025,17 @@ public:
l["Description"] = Info.GetDescription();
l["Wiki"] = Info.GetWikiPage();
if(Info.GetHasArgs())
{
l["HasArgs"] = "true";
}
else
{
l["HasArgs"] = "false";
}
l["ArgsHelpText"] = Info.GetArgsHelpText();
CModule *pModule = NULL;
if (pUser)
pModule = pUser->GetModules().FindModule(Info.GetName());
@@ -1325,6 +1347,17 @@ public:
l["Name"] = Info.GetName();
l["Description"] = Info.GetDescription();
l["Wiki"] = Info.GetWikiPage();
if(Info.GetHasArgs())
{
l["HasArgs"] = "true";
}
else
{
l["HasArgs"] = "false";
}
l["ArgsHelpText"] = Info.GetArgsHelpText();
}
return true;
+1
View File
@@ -305,6 +305,7 @@ void CWebSock::SetVars() {
m_Template["SessionUser"] = GetUser();
m_Template["SessionIP"] = GetRemoteIP();
m_Template["Tag"] = CZNC::GetTag(GetSession()->GetUser() != NULL, true);
m_Template["Version"] = CZNC::GetVersion();
m_Template["SkinName"] = GetSkinName();
m_Template["_CSRF_Check"] = GetCSRFCheck();
+26
View File
@@ -0,0 +1,26 @@
jQuery License - http://jquery.org/license
------------------------------------------
jQuery is dual licensed under MIT and GNU GPL v2 license.
The ZNC project uses jQuery under the GNU GPL v2 license.
You may find the license text at
http://github.com/jquery/jquery/blob/master/GPL-LICENSE.txt
Sizzle License
--------------
The jQuery library uses the Sizzle selector engine (http://sizzlejs.com/) internally.
Sizzle itself is triple-licensed under MIT, GNU GPL v2 and BSD license.
The ZNC project uses Sizzle under the GNU GPL v2 license.
You may find the license text at
https://github.com/jquery/sizzle/blob/master/LICENSE
jQuery.PoshyTip License
-----------------------
jQuery.Poshy Tip is dual licensed under the MIT and GPL licenses.
+35
View File
@@ -0,0 +1,35 @@
The Theme "ZNC-ATION" for "ZNC - Advanced IRC Bouncer"
uses icons from the Nuvola Icons Set by David Vignoni (http://icon-king.com).
Nuvola Icons Set License - GNU LGPL v2.1 and v3
-------------------------------------------------
This library is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of
the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but without any warranty; without even the implied warranty of
merchantability or fitness for a particular purpose.
See version 2.1 and version 3 of the GNU Lesser General Public
License for more details.
Only a selected set of icons is used.
Files are renamed, due to the length of original filenames.
Our Filename | Original Nuvola Icon Set Filename
----------------|----------------------------------
key.png | Nuvola_apps_password
gears.png | Nuvola_apps_kcmsystem
error.png | Nuvola_apps_error
user.png | Nuvola_apps_personal
Icon Set Overview
-----------------
http://commons.wikimedia.org/wiki/Nuvola/all
How to get more icons
---------------------
Use the following link and save the image.
http://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Nuvola_devices_blockdevice.png/32px-Nuvola_devices_blockdevice.png
You might adjust the pixel size in the link to 24px.
@@ -0,0 +1,61 @@
/* CSS Stylesheet for jQuery PoshyTip */
.tip-yellowsimple {
z-index:1000;
text-align:left;
border:1px solid #c7bf93;
border-radius:4px;
-moz-border-radius:4px;
-webkit-border-radius:4px;
padding:6px 8px;
min-width:50px;
max-width:300px;
color:#000;
background-color:#fff9c9;
/**
* - If you set a background-image, border/padding/background-color will be ingnored.
* You can set any padding to .tip-inner instead if you need.
* - If you want a tiled background-image and border/padding for the tip,
* set the background-image to .tip-inner instead.
*/
}
.tip-yellowsimple .tip-inner {
font:12px/16px arial,helvetica,sans-serif;
}
/* Configure an arrow image - the script will automatically position it on the correct side of the tip */
.tip-yellowsimple .tip-arrow-top {
margin-top:-6px;
margin-left:-5px; /* approx. half the width to center it */
top:0;
left:50%;
width:9px;
height:6px;
background:url(../img/tip-yellowsimple_arrows.gif) no-repeat;
}
.tip-yellowsimple .tip-arrow-right {
margin-top:-4px; /* approx. half the height to center it */
margin-left:0;
top:50%;
left:100%;
width:6px;
height:9px;
background:url(../img/tip-yellowsimple_arrows.gif) no-repeat -9px 0;
}
.tip-yellowsimple .tip-arrow-bottom {
margin-top:0;
margin-left:-5px; /* approx. half the width to center it */
top:100%;
left:50%;
width:9px;
height:6px;
background:url(../img/tip-yellowsimple_arrows.gif) no-repeat -18px 0;
}
.tip-yellowsimple .tip-arrow-left {
margin-top:-4px; /* approx. half the height to center it */
margin-left:-6px;
top:50%;
left:0;
width:6px;
height:9px;
background:url(../img/tip-yellowsimple_arrows.gif) no-repeat -27px 0;
}
+528
View File
@@ -0,0 +1,528 @@
/* reset */
* {
padding: 0;
margin: 0;
}
body {
background-color: #F8F8F8;
color: #333333;
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
font-size: 13px;
font-weight: normal;
line-height: 18px;
}
/* anchors */
a, a:link, a:active, a:visited, a:focus {
color: #00008B;
text-decoration: none;
outline: none;
}
a:hover {color: red} /* mouse over link */
#wrapper {
width: 960px;
margin: 20px auto;
border: 1px solid #BABABA;
min-height: 450px;
/* box-shadow */
-webkit-box-shadow: 1px 1px 2px #ccc;
-moz-box-shadow: 1px 1px 2px #ccc;
box-shadow: 1px 1px 2px #ccc;
}
.errorbar {
background-color: #FFBABA;
background-position: 10px center;
background-repeat: no-repeat;
border: 2px double #C50A1F;
color: #D8000C;
float: left;
margin: 10px 0;
padding: 15px 10px 15px 50px;
width: 64%;
margin-left: 10px;
background-image: url('/pub/img/error.png');
}
#main {
padding: 20px;
}
aside {
margin-top: 5px;
}
#banner_top {
background-color: #B8B8B8;
}
.zncversion
{
padding-right: 30px;
padding-top: 5px;
}
.zncversion a:hover {
color: white;
}
.zncversion a, .zncversion a:link, .zncversion a:active, .zncversion a:visited, .zncversion a:focus {
color: white;
text-decoration: none;
outline: none;
}
#breadcrumb {
font-size: 14px;
font-weight: bold;
border-bottom: 1px solid #CCCCCC;
/* 2/3 of the main content width */
width: 67%;
margin-bottom: 15px;
padding: 0 0 3px 1px;
}
#content {
width: 67%;
}
/* raquo vertical alignment in breadcrumb */
.raquo {
font-size: large;
font-weight: normal;
line-height: 18px;
margin-left: 3px;
margin-right: 3px;
position: relative;
top: -3px;
vertical-align: middle;
}
/* tables */
table {
font-size: 14px;
}
thead td, th {
background-color: #BEBEBE;
}
tbody td {
background-color: #E0E0E0;
}
td, th {
min-width: 60px;
padding: 4px 12px;
}
tr.evenrow td {
background-color: #D3D3D3;
}
/* sections */
.section {
border: 1px solid #CCCCCC;
border-radius: 3px 3px 3px 3px;
padding: 10px;
margin-bottom: 10px;
padding-top: 5px;
background-color: #EDEDED;
width: 100%; /* of main content */
/* box-shadow */
-webkit-box-shadow: 1px 1px px #fff; /* inset */
-moz-box-shadow: 1px 1px px #fff;
box-shadow: 1px 1px px #fff;
}
/* formelements */
.sectionbody input, textarea, select {
border: 1px solid #CCCCCC;
font-family: Tahoma,sans-serif;
font-size: 14px;
padding: 3px;
}
.subsection { /* groups a div inputlabel (label) and formelement */
display: table;
margin-top: 5px;
margin-bottom: 5px;
width: 100%;
}
.checkboxandlabel {
display: inline-block;
width: 150px;
margin-right: 50px;
}
.subsection .inputlabel {
text-align: left;
width: 150px; /* table cell size */
display: table-cell; /* input label is displayed as a table cell */
vertical-align: top;
}
input {
padding: 3px;
width: 80%;
border: 1px solid #999999;
}
input[type=checkbox],
input[type=radio]
{
margin: 2px 5px 2px 2px; /* 2nd value is distance between checkbox/radio and labeling text */
border: 0px;
width: 10%;
height: 16px;
width: 16px;
}
/* formelement focus */
input:focus, textarea:focus, select:focus {
border: 1px solid #333333;
/* the shadow color used is the tooltip border color */
/* box-shadow */
-webkit-box-shadow: 0px 0px 2px #C7BF93;
-moz-box-shadow: 0px 0px 2px #C7BF93;
box-shadow: 0px 0px 2px #C7BF93;
}
/* h */
h1 {
/* transition */
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-ms-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
transition: all 0.2s linear;
/* color: #000000; black znc branding inset */
color: #F8F8F8; /* remove black color, replaced with background col */
font-size: 20px;
font-style: normal;
font-weight: bold;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.1), 0 0 30px rgba(255, 255, 255, 0.125);
}
h3 {
margin: 0 -11px 10px;
padding-bottom: 4px;
padding-left: 11px;
border-bottom: 1px solid #DDDDDD;
/* text-shadow */
text-shadow: 1px 1px 0px #ffffff;
filter: dropshadow(color=#ffffff, offx=1, offy=1);
}
#banner-top {
background-color: #999999;
}
td.mod_name {
font-size: 13px;
width: 120px;
}
/* box */
.box {
background: none repeat scroll 0 0 #ffffff;
border: 5px double #DDDDDD;
margin: 0 0 20px;
padding: 0;
width: 25%;
}
.heading {
font-size: 14px;
font-weight: bold;
height: 20px;
margin: 0;
padding: 5px 10px;
width: 50%;
/* text-shadow */
text-shadow: 1px 1px 1px #000000;
filter: dropshadow(color=#00000, offx=1, offy=1);
}
/* icon in box heading */
.heading img {
position: relative;
top: -3px;
vertical-align: text-top;
padding-right: 3px;
}
.box-inner-content {
padding: 10px;
display: block;
}
/* rounded edges */
.rounded-top-right {
border-radius: 0 20px 0 0;
}
.rounded-bottom-right {
border-radius: 0 0 20px 0;
}
/* universal background-colors, they are used on the box headings */
.blue {
background-color: #00A6FC;
border: 1px inset #00A6FC;
color: #ffffff;
}
.red {
background-color: #E91C21;
border: 1px inset #E91C21;
color: #ffffff;
}
.#ffffff {
background-color: #E9E9E9;
border: 1px inset #E9E9E9;
color: #000000;
}
.black {
background-color: #141414;
border: 1px inset #141414;
color: #333333;
}
.green {
background-color: #7FAE00;
border: 1px inset #7FAE00;
color: #ffffff;
}
.yellow {
background-color: #fcd400;
border: 1px inset #fcd400;
color: #000000;
}
/* login + logout boxes */
.infobar {
background-color: #CCCCCC;
}
#infobar_ident, .logoutbox, .loginbox {
font-size: 14px;
display: block;
padding: 4px;
margin-left: 20px;
}
.user_name {
color: #000000;
font-weight: bold;
}
input.full, textarea.full, .full input, .full textarea {
width: 90%;
}
input.half, textarea.half, .half input, .half textarea {
width: 50%;
}
input.third, textarea.third, .third input, .third textarea {
width: 33%;
}
input.twothird, textarea.twothird, .twothird input, .twothird textarea {
width: 80%; /* raised to 82 */
}
input[type="submit"] {
/* gradient */
background: #e1001a; /* Old browsers */
background: -moz-linear-gradient(top, #e1001a 0%, #c50a1f 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e1001a), color-stop(100%,#c50a1f)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #e1001a 0%,#c50a1f 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #e1001a 0%,#c50a1f 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #e1001a 0%,#c50a1f 100%); /* IE10+ */
background: linear-gradient(top, #e1001a 0%,#c50a1f 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e1001a', endColorstr='#c50a1f',GradientType=0 ); /* IE6-9 */
/* box-shadow */
-webkit-box-shadow: 1px 0 0 #C50A1F, -1px 0 0 #C50A1F, 0 1px 0 #C50A1F, 0 -1px 0 #C50A1F, 0 5px 10px -5px #666666;
-moz-box-shadow: 1px 0 0 #C50A1F, -1px 0 0 #C50A1F, 0 1px 0 #C50A1F, 0 -1px 0 #C50A1F, 0 5px 10px -5px #666666;
box-shadow: 1px 0 0 #C50A1F, -1px 0 0 #C50A1F, 0 1px 0 #C50A1F, 0 -1px 0 #C50A1F, 0 5px 10px -5px #666666;
/* text-shadow */
text-shadow: 1px 1px 3px #E35061;
filter: dropshadow(color=#E35061, offx=1, offy=1);
border: 1px double #E35061;
border-radius: 0 0 0 0;
color: #FFFFFF;
cursor: pointer;
padding: 0px 25px;
width: auto;
heigth: 15px;
font-weight: bold;
margin-top: 10px;
}
input[type="submit"]:hover {
background: none repeat scroll 0 0 #C50A1F;
text-shadow: none;
}
div.submitline {
line-heigth: 15px;
}
/* header banner - 3d css ribbon */
header {
margin: 0px auto;
width: 980px;
}
.ribbon {
float: left;
position: relative;
top: 30px;
width: 992px;
left: -6px;
height: 50px;
z-index: 100; /* the stack order: foreground */
/* gradient - colors used: red high contrast ( #E1001A, #C50A1F ) - bit darker: #BF3030, #B50A0A; */
background: #ca1c21; /* Old browsers */
background: -moz-linear-gradient(top, #ca1c21 0%, #b50a0a 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ca1c21), color-stop(100%,#b50a0a)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #ca1c21 0%,#b50a0a 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #ca1c21 0%,#b50a0a 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #ca1c21 0%,#b50a0a 100%); /* IE10+ */
background: linear-gradient(top, #ca1c21 0%,#b50a0a 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ca1c21', endColorstr='#b50a0a',GradientType=0 ); /* IE6-9 */
/* box shadow */
-moz-box-shadow: 0px 0px 4px rgba(0,0,0,0.55);
-khtml-box-shadow: 0px 0px 4px rgba(0,0,0,0.55);
-webkit-box-shadow: 0px 0px 4px rgba(0,0,0,0.55);
}
.ribbon h1 {
background: none repeat scroll 0 0 transparent;
font-size: 30px;
padding-left: 35px;
padding-top: 6px;
text-align: left;
/* black text 1px inset, kind of a relief look */
/*text-shadow: 1px 1px 0 #E1001A, -1px -1px 0 #C50A1F;*/
/* white inset, on request */
text-shadow: 1px 1px 0 #111111, -1px -1px 0 #777777;
width: auto;
line-height: 37px;
}
.ribbon small {
font-size: 40%;
}
.triangle-left {
border-color: transparent #8B0000 transparent transparent;
border-style: solid;
border-width: 15px;
height: 0;
left: -21px;
position: relative;
top: 65px;
width: 0;
z-index: -1;
}
.triangle-right {
border-color: transparent transparent transparent #8B0000;
border-style: solid;
border-width: 15px;
height: 0;
left: 971px;
position: relative;
top: 35px;
width: 0;
z-index: -1;
}
/* fake content box above the ribbon */
.content-above-ribbon {
border: 1px solid #BABABA;
margin: 0 auto;
position: relative;
top: 31px;
width: 960px;
height: 20px;
/* box-shadow */
-webkit-box-shadow: 1px 1px 2px #ccc;
-moz-box-shadow: 1px 1px 2px #ccc;
box-shadow: 1px 1px 2px #ccc;
}
/* float left and right */
.float-left {
float:left;
}
.float-right {
float:right;
}
/* paddings */
.pad-5 {
padding: 5px;
}
.pad-10 {
padding: 10px;
}
/* margins */
.marg-5 {
margin: 5px;
}
.marg-10 {
margin: 10px;
}
.clearfix {
clear: both;
}
/* ul/li - list styling */
ul {
font-size: 14px;
list-style-type: none; /* remove bullets */
margin-left: 20px; /* indention */
}
li {
margin: 3px 0; /* space around list items */
}
ul.nav li.active:before {
color: red;
content: "» ";
font-weight: bold;
/* element is indented by size of content, so subtract width of content */
/* add width of padding-right */
margin-left: -16px;
padding-right: 4px; /* distance between raqou and element */
/* vertical-align: middle; didnt work exact (2px off :( ), workaround: */
top: -2px;
position: relative;
}
ul.nav li .title {
font-weight: bold;
}
ul.nav li .modtitle { /* title of a module */
}
ul.nav li .subitem {
padding-left: 1em;
}
ul a:hover:before, ul a:focus:before {
content: "» ";
color: #000000;
font-size: 14px;
font-weight: bold;
/* element is indented by size of content, so subtract width of content */
/* add width of padding-right */
margin-left: -16px;
padding-right: 4px; /* distance between raqou and element */
/* vertical-align: middle; didnt work exact (2px off :( ), workaround: */
top: -2px;
position: relative;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+19
View File
@@ -0,0 +1,19 @@
/*
* ZNC Javascript - http://znc.in
*/
$(document).ready(function()
{
/**
* jQ.Poshytip
* This binds the tooltip to input formelements
* and uses "title" attr as source for tooltip text.
*/
$('input[title]').poshytip({
className: 'tip-yellowsimple',
showOn: 'focus',
alignTo: 'target',
alignX: 'inner-left',
offsetX: 0,
offsetY: 5
});
})
+11
View File
@@ -0,0 +1,11 @@
<header>
<div class="content-above-ribbon">&nbsp;</div>
<div class="ribbon">
<h1>ZNC
<small>Advanced IRC Bouncer</small>
<small class="zncversion float-right"><? VAR Tag ?></small></small>
</h1>
</div>
<div class="triangle-left"></div>
<div class="triangle-right"></div>
</header>
+72
View File
@@ -0,0 +1,72 @@
<!DOCTYPE html>
<? INC Options.tmpl ?>
<? ADDROW CSSLoop HREF=/pub/css/znc-ation.css ?>
<? ADDROW CSSLoop HREF=/pub/css/tip-yellowsimple.css ?>
<? ADDROW CSSLoop HREF=/pub/css/jquery.checkbox.css ?>
<? ADDROW JSLoop HREF=/pub/js/jquery-1.7.1.min.js ?>
<? ADDROW JSLoop HREF=/pub/js/jquery.poshytip.min.js ?>
<? ADDROW JSLoop HREF=/pub/js/jquery.checkbox.min.js ?>
<? ADDROW JSLoop HREF=/pub/js/znc.js ?>
<html lang="en">
<head>
<meta charset="utf-8">
<title>ZNC - <? VAR Title DEFAULT="Web Frontend" ?></title>
<? LOOP CSSLoop ?>
<?IF HREF?><link rel="stylesheet" href="<? VAR HREF ?>" /><?ENDIF?>
<?ENDLOOP?>
<link rel="shortcut icon" href="/pub/img/favicon.ico" />
<? LOOP JSLoop ?>
<?IF HREF?><script type="text/javascript" src="<? VAR HREF ?>"></script><?ENDIF?>
<?ENDLOOP?>
<? INC ExtraHeader.tmpl ?>
</head>
<body>
<!-- Banner -->
<? INC Banner.tmpl ?>
<!-- !Banner -->
<!-- Wrapper -->
<div id="wrapper">
<!-- MessageBar -->
<? INC MessageBar.tmpl ?>
<!-- !MessageBar -->
<!-- InfoBar -->
<? INC InfoBar.tmpl ?>
<!-- !InfoBar -->
<? IF LoggedIn ?>
<? INC Menu.tmpl ?>
<? ENDIF ?>
<!-- Main -->
<div id="main">
<!-- Content -->
<div id="content">
<!-- BreadCrumbs -->
<? INC BreadCrumbs.tmpl ?>
<!-- !BreadCrumbs -->
<div id="subpage">
<? REM ?>
In your subpage (module page or static page) you'll probably want to do something like this...
<? INC Header.tmpl ?>
This is my <b>super</b> cool sub page!
<? INC Footer.tmpl ?>
If you'd like to add your own local css file to be included after the global main.css,
you can make your own Header.tmpl like so...
<? ADDROW CSSLoop HREF=/pub/your_local.css ?>
<? ADDROW JSLoop HREF=/pub/your_local.js ?>
<? INC BaseHeader.tmpl ?>
<? ENDREM ?>
+5
View File
@@ -0,0 +1,5 @@
<div id="breadcrumb">ZNC
<? IF ModName ?><span class="raquo">&raquo;</span> Module <? VAR ModName ?><? ENDIF ?>
<? REM ?><? IF PageName ?><span class="raquo">&raquo;</span> <? VAR PageName ?><? ENDIF ?><? ENDREM ?>
<? IF Title && Title != *ModName ?><span class="raquo">&raquo;</span> <? VAR Title ?><? ENDIF ?>
</div>
+18
View File
@@ -0,0 +1,18 @@
</div>
<!-- !SubPage -->
</div>
<!-- !Content -->
</div>
<!-- !Main -->
<!-- FooterBar -->
<footer>
<? INC FooterTag.tmpl ?>
</footer>
<!-- !FooterBar -->
</div>
<!-- !Wrapper -->
</body>
</html>
+22
View File
@@ -0,0 +1,22 @@
<? REM ?>
This REM block disables the loading of the _global_.css intentionally.
<? ADDROW CSSLoop HREF=/pub/_default_.css ?>
<? ENDREM ?>
<? INC BaseHeader.tmpl ?>
<? REM ?>
This is a wrapper file which simply includes BaseHeader.tmpl so that new skins can make
a Header.tmpl similar to...
<? ADDROW CSSLoop HREF=/pub/myskin.css ?>
<? INC BaseHeader.tmpl ?>
...this way a skin can base itself off of the same html as the default skin but still add
custom css/js
@todo In the future I'd like to support something like <? INC File.tmpl SUPER ?> or even
just do a current file vs inc'd file comparison to make sure they aren't the same.
This way we can <? INC Header.tmpl ?> from the "derived" Header.tmpl and not cause
an recursive loop.
<? ENDREM ?>
+23
View File
@@ -0,0 +1,23 @@
<div class="box infobar marg-10 float-right">
<div class="heading green rounded-bottom-right auto-width">
<? IF LoggedIn ?>
<img src="/pub/img/user.png" alt="user.png">
<? VAR SessionUser DEFAULT="-Guest-" ?>
<? ELSE ?>
<img src="/pub/img/key.png" alt="key.png">
Login
<? ENDIF ?>
</div>
<div class="box-inner-content">
<? IF LoggedIn ?>
<span id="infobar_ident">From IP <? VAR SessionIP ?></span>
<? ENDIF ?>
<? INC LoginBar.tmpl ?>
</div>
</div>
+24
View File
@@ -0,0 +1,24 @@
<? IF LoggedIn ?>
<span class="logoutbox">
<a href="/logout">Logout</a>
</span>
<? ELSE IF !ModName && PageName == "login" ?>
<span class="logoutbox">&nbsp;</span>
<? ELSE ?>
<form action="/login" method="post">
<input type="hidden" name="submitted" value="1" />
<div class="loginbox">
<p>
<label for="user">Username</label>
<input name="user" id="user" type="text" required
title="Please enter your username." />
</p>
<p>
<label for="password">Password</label>
<input name="pass" id="password" type="password" required
title="Enter the password for the username." />
</p>
<input type="submit" class="submit" value="Login" />
</div>
</form>
<? ENDIF ?>
+72
View File
@@ -0,0 +1,72 @@
<menu class="box rounded-top-right marg-10 float-right clearfix">
<div class="heading blue rounded-bottom-right">
<img src="/pub/img/gears.png" alt="gears.png">
Menu
</div>
<div class="box-inner-content">
<ul class="nav">
<li class="topitem<? IF !ModName && PageName == "index" ?> active<? ENDIF ?>">
<a href="/">Home</a>
</li>
<? IF GlobalModLoop ?>
<li class="topitem parent">
<span class="title">Global Modules</span>
<ul>
<? LOOP GlobalModLoop SORTASC=ModName ?>
<li class="modtitle<? IF Active ?> active<? ENDIF ?>">
<a href="<? VAR ModPath ?>"><? VAR Title ?></a>
</li>
<? LOOP SubPageLoop ?>
<li class="subitem<? IF Active ?> active<? ENDIF ?>">
<a href="<? VAR ModPath ?>/<? VAR PageName ?><? IF Params ?>?<? VAR Params ?><? ENDIF ?>"><? VAR Title ?></a>
</li>
<? ENDLOOP ?>
<? ENDLOOP ?>
</ul>
</li>
<? ENDIF ?>
<? IF UserModLoop ?>
<li class="topitem parent">
<span class="title">User Modules</span>
<ul>
<? LOOP UserModLoop SORTASC=ModName ?>
<li class="modtitle<? IF Active ?> active<? ENDIF ?>">
<a href="<? VAR ModPath ?>"><? VAR Title ?></a>
</li>
<? LOOP SubPageLoop ?>
<li class="subitem<? IF Active ?> active<? ENDIF ?>">
<a href="<? VAR ModPath ?>/<? VAR PageName ?><? IF Params ?>?<? VAR Params ?><? ENDIF ?>"><? VAR Title ?></a>
</li>
<? ENDLOOP ?>
<? ENDLOOP ?>
</ul>
</li>
<? ENDIF ?>
<? IF NetworkModLoop ?>
<? LOOP NetworkModLoop SORTASC=NetworkName ?>
<? IF ModLoop ?>
<li class="topitem parent"><span class="title">Network Modules (<? VAR NetworkName ?>)</span>
<ul>
<? LOOP ModLoop SORTASC=ModName ?>
<li class="modtitle<? IF Active ?> active<? ENDIF ?>">
<a href="<? VAR ModPath ?>"><? VAR Title ?></a>
</li>
<? LOOP SubPageLoop ?>
<li class="subitem<? IF Active ?> active<? ENDIF ?>">
<a href="<? VAR ModPath ?>/<? VAR PageName ?><? IF Params ?>?<? VAR Params ?><? ENDIF ?>"><? VAR Title ?></a>
</li>
<? ENDLOOP ?>
<? ENDLOOP ?>
</ul>
</li>
<? ENDIF ?>
<? ENDLOOP ?>
<? ENDIF ?>
</ul>
</div>
</menu>