mirror of
https://github.com/znc/znc.git
synced 2026-08-11 11:23:18 +02:00
Merge commit 'refs/pull/557/head' of github.com:znc/znc
This commit is contained in:
@@ -203,7 +203,7 @@ public:
|
||||
return (GetName() < Info.GetName());
|
||||
}
|
||||
|
||||
bool SupportsType(EModuleType eType) {
|
||||
bool SupportsType(EModuleType eType) const {
|
||||
return m_seType.find(eType) != m_seType.end();
|
||||
}
|
||||
|
||||
|
||||
@@ -162,6 +162,8 @@
|
||||
<td>Name</td>
|
||||
<td>Arguments</td>
|
||||
<td>Description</td>
|
||||
<td>Loaded globally</td>
|
||||
<td>Loaded by user</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -181,6 +183,24 @@
|
||||
<? ENDIF ?>
|
||||
</td>
|
||||
<td class="mod_descr"><? VAR Description ?></td>
|
||||
<td align="center">
|
||||
<? IF CanBeLoadedGlobally ?>
|
||||
<input type="checkbox" name="loaded_globally" id="loaded_globally_<? VAR Name ?>"
|
||||
<? IF LoadedGlobally ?>
|
||||
checked="checked"
|
||||
<? ENDIF ?>
|
||||
disabled="disabled"/>
|
||||
<? ENDIF ?>
|
||||
</td>
|
||||
<td align="center">
|
||||
<? IF CanBeLoadedByUser ?>
|
||||
<input type="checkbox" name="loaded_by_user" id="loaded_by_user_<? VAR Name ?>"
|
||||
<? IF LoadedByUser ?>
|
||||
checked="checked"
|
||||
<? ENDIF ?>
|
||||
disabled="disabled"/>
|
||||
<? ENDIF ?>
|
||||
</td>
|
||||
</tr>
|
||||
<? ENDLOOP ?>
|
||||
|
||||
|
||||
@@ -172,6 +172,8 @@
|
||||
<td>Name</td>
|
||||
<td>Arguments</td>
|
||||
<td>Description</td>
|
||||
<td>Loaded globally</td>
|
||||
<td>Loaded by networks</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -191,6 +193,29 @@
|
||||
<? ENDIF ?>
|
||||
</td>
|
||||
<td class="mod_descr"><? VAR Description ?></td>
|
||||
<td align="center">
|
||||
<? IF CanBeLoadedGlobally ?>
|
||||
<input type="checkbox" name="loaded_globally" id="loaded_globally_<? VAR Name ?>"
|
||||
<? IF LoadedGlobally ?>
|
||||
checked="checked"
|
||||
<? ENDIF ?>
|
||||
disabled="disabled"/>
|
||||
<? ENDIF ?>
|
||||
</td>
|
||||
<td align="center">
|
||||
<? IF CanBeLoadedByNetwork ?>
|
||||
<input type="checkbox" name="loaded_by_network" id="loaded_by_net_<? VAR Name ?>"
|
||||
<? IF LoadedByAllNetworks ?>
|
||||
checked="checked"
|
||||
<? ENDIF ?>
|
||||
disabled="disabled"/>
|
||||
<? IF LoadedBySomeNetworks && !LoadedByAllNetworks ?>
|
||||
<script type="text/javascript">
|
||||
document.getElementById("loaded_by_net_<? VAR Name ?>").indeterminate = true;
|
||||
</script>
|
||||
<? ENDIF ?>
|
||||
<? ENDIF ?>
|
||||
</td>
|
||||
</tr>
|
||||
<? ENDLOOP ?>
|
||||
|
||||
|
||||
@@ -167,6 +167,8 @@
|
||||
<td>Name</td>
|
||||
<td>Arguments</td>
|
||||
<td>Description</td>
|
||||
<td>Loaded by networks</td>
|
||||
<td>Loaded by users</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -186,6 +188,34 @@
|
||||
<? IF ArgsHelpText ?> title="<? VAR ArgsHelpText ?>"<? ENDIF ?> />
|
||||
</td>
|
||||
<td class="mod_descr"><? VAR Description ?></td>
|
||||
<td align="center">
|
||||
<? IF CanBeLoadedByNetwork ?>
|
||||
<input type="checkbox" name="loaded_by_network" id="loaded_by_net_<? VAR Name ?>"
|
||||
<? IF LoadedByAllNetworks ?>
|
||||
checked="checked"
|
||||
<? ENDIF ?>
|
||||
disabled="disabled"/>
|
||||
<? IF LoadedBySomeNetworks && !LoadedByAllNetworks ?>
|
||||
<script type="text/javascript">
|
||||
document.getElementById("loaded_by_net_<? VAR Name ?>").indeterminate = true;
|
||||
</script>
|
||||
<? ENDIF ?>
|
||||
<? ENDIF ?>
|
||||
</td>
|
||||
<td align="center">
|
||||
<? IF CanBeLoadedByUser ?>
|
||||
<input type="checkbox" name="loaded_by_user" id="loaded_by_user_<? VAR Name ?>"
|
||||
<? IF LoadedByAllUsers ?>
|
||||
checked="checked"
|
||||
<? ENDIF ?>
|
||||
disabled="disabled"/>
|
||||
<? IF LoadedBySomeUsers && !LoadedByAllUsers ?>
|
||||
<script type="text/javascript">
|
||||
document.getElementById("loaded_by_user_<? VAR Name ?>").indeterminate = true;
|
||||
</script>
|
||||
<? ENDIF ?>
|
||||
<? ENDIF ?>
|
||||
</td>
|
||||
</tr>
|
||||
<? ENDLOOP ?>
|
||||
</tbody>
|
||||
|
||||
+58
-1
@@ -752,6 +752,14 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
// Check if module is loaded globally
|
||||
l["CanBeLoadedGlobally"] = CString(Info.SupportsType(CModInfo::GlobalModule));
|
||||
l["LoadedGlobally"] = CString(CZNC::Get().GetModules().FindModule(Info.GetName()) != NULL);
|
||||
|
||||
// Check if module is loaded by user
|
||||
l["CanBeLoadedByUser"] = CString(Info.SupportsType(CModInfo::UserModule));
|
||||
l["LoadedByUser"] = CString(pUser->GetModules().FindModule(Info.GetName()) != NULL);
|
||||
|
||||
if (!spSession->IsAdmin() && pUser->DenyLoadMod()) {
|
||||
l["Disabled"] = "true";
|
||||
}
|
||||
@@ -1209,8 +1217,22 @@ public:
|
||||
l["ArgsHelpText"] = Info.GetArgsHelpText();
|
||||
|
||||
CModule *pModule = NULL;
|
||||
if (pUser)
|
||||
if (pUser) {
|
||||
pModule = pUser->GetModules().FindModule(Info.GetName());
|
||||
// Check if module is loaded by all or some networks
|
||||
const vector<CIRCNetwork*>& userNetworks = pUser->GetNetworks();
|
||||
unsigned int networksWithRenderedModuleCount = 0;
|
||||
for (unsigned int networkIndex = 0; networkIndex < userNetworks.size(); ++networkIndex) {
|
||||
const CIRCNetwork* pCurrentNetwork = userNetworks[networkIndex];
|
||||
const CModules& networkModules = pCurrentNetwork->GetModules();
|
||||
if (networkModules.FindModule(Info.GetName())) {
|
||||
networksWithRenderedModuleCount++;
|
||||
}
|
||||
}
|
||||
l["CanBeLoadedByNetwork"] = CString(Info.SupportsType(CModInfo::NetworkModule));
|
||||
l["LoadedByAllNetworks"] = CString(networksWithRenderedModuleCount == userNetworks.size());
|
||||
l["LoadedBySomeNetworks"] = CString(networksWithRenderedModuleCount != 0);
|
||||
}
|
||||
if (pModule) {
|
||||
l["Checked"] = "true";
|
||||
l["Args"] = pModule->GetArgs();
|
||||
@@ -1218,6 +1240,9 @@ public:
|
||||
l["Disabled"] = "true";
|
||||
}
|
||||
}
|
||||
l["CanBeLoadedGlobally"] = CString(Info.SupportsType(CModInfo::GlobalModule));
|
||||
// Check if module is loaded globally
|
||||
l["LoadedGlobally"] = CString(CZNC::Get().GetModules().FindModule(Info.GetName()) != NULL);
|
||||
|
||||
if (!spSession->IsAdmin() && pUser && pUser->DenyLoadMod()) {
|
||||
l["Disabled"] = "true";
|
||||
@@ -1626,6 +1651,38 @@ public:
|
||||
l["Wiki"] = Info.GetWikiPage();
|
||||
l["HasArgs"] = CString(Info.GetHasArgs());
|
||||
l["ArgsHelpText"] = Info.GetArgsHelpText();
|
||||
|
||||
// Check if the module is loaded by all or some users, and/or by all or some networks
|
||||
unsigned int usersWithRenderedModuleCount = 0;
|
||||
unsigned int networksWithRenderedModuleCount = 0;
|
||||
unsigned int networksCount = 0;
|
||||
const map<CString,CUser*>& allUsers = CZNC::Get().GetUserMap();
|
||||
for (map<CString,CUser*>::const_iterator usersIt = allUsers.begin(); usersIt != allUsers.end(); ++usersIt) {
|
||||
const CUser& User = *usersIt->second;
|
||||
|
||||
// Count users which has loaded a render module
|
||||
const CModules& userModules = User.GetModules();
|
||||
if (userModules.FindModule(Info.GetName())) {
|
||||
usersWithRenderedModuleCount++;
|
||||
}
|
||||
// Count networks which has loaded a render module
|
||||
const vector<CIRCNetwork*>& userNetworks = User.GetNetworks();
|
||||
networksCount += userNetworks.size();
|
||||
for (unsigned int networkIndex = 0; networkIndex < userNetworks.size(); ++networkIndex)
|
||||
{
|
||||
const CIRCNetwork *pCurrentNetwork = userNetworks[networkIndex];
|
||||
if (pCurrentNetwork->GetModules().FindModule(Info.GetName())) {
|
||||
networksWithRenderedModuleCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
l["CanBeLoadedByNetwork"] = CString(Info.SupportsType(CModInfo::NetworkModule));
|
||||
l["LoadedByAllNetworks"] = CString(networksWithRenderedModuleCount == networksCount);
|
||||
l["LoadedBySomeNetworks"] = CString(networksWithRenderedModuleCount != 0);
|
||||
|
||||
l["CanBeLoadedByUser"] = CString(Info.SupportsType(CModInfo::UserModule));
|
||||
l["LoadedByAllUsers"] = CString(usersWithRenderedModuleCount == allUsers.size());
|
||||
l["LoadedBySomeUsers"] = CString(usersWithRenderedModuleCount != 0);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user