Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/userlist.tmpl
[% USE CPHash -%]
[% USE JSON -%]
[% USE HTMLOptions -%]
[% USE Whostmgr -%]
<link rel="stylesheet" type="text/css" href="[% MagicRevision('/yui/autocomplete/assets/skins/sam/autocomplete.css') %]" />
<style type="text/css">
.htable {
margin: 0 auto;
padding:0;
border-collapse: separate;
border-spacing: 1px;
height: 226px;
}
.htable td {
padding-left: 5px;
padding-right: 5px;
border-right: 0 none;
}
.htable th {
background: #ccc;
height: 22px;
white-space: nowrap;
}
.searchmod {
text-align:center;
}
#brick1, #brick2, #brick3 {
text-align: center;
padding: 0;
border-collapse: collapse;
width: 800px;
}
#brick2, #brick3 {
margin-top: 15px;
}
#brick1 td.col3 {
text-align: center;
border-right:0;
}
#brick1 td.col2 {
text-align: left;
}
#brick1 td.col2 table {
width: 100%;
}
.brick th {
padding-left: 10px;
padding-right: 10px;
}
#brick1 td.col2 td.scol1 {
text-align: left;
border-right: 0px;
vertical-align: top;
padding-top: 0px;
width: 65%;
}
#brick1 td.col2 td.scol1 table {
height: 183px;
width: 100%;
}
#brick1 td.col2 table {
height: 226px;
}
#brick1 td.col2 td.scol2 {
padding-top: 0;
border-right: 0;
}
#acctinfo {
text-align: center;
vertical-align: middle;
display: inline-block;
margin-left: 5px;
margin-right: 5px;
}
#acctinfo span {
vertical-align: middle;
text-align: center;
width: 250px;
display: inline-block;
}
#brick1 td.col2 td.scol1 table {
text-align: left;
border-collapse: collapse;
margin-top: 1px;
height: 226px;
}
#brick1 td.col2 td.scol1 table td.heavybg,
#brick1 td.col2 td.scol1 table td.lightbg {
padding-left: 5px;
padding-right: 5px;
text-align: center;
font-weight: bold;
vertical-align: top;
}
#brick1 td.col2 td.scol1 table td.heavybg {
height: 16px;
}
#brick1 td.col2 td.scol1 table tr.search td.lightbg {
height: 18px;
}
select {
width: 99%;
}
.button-group button {
padding: 6px 12px;
font-size: 13px;
font-family: inherit;
}
.button-group button:hover,
.button-group button.hover {
border-width: 1px;
}
[% IF cfg.show_new_search %]
div#searchautocomplete,
div#searchautocomplete2 {
text-align: left;
}
input#searchinput, input#searchinput2 {
position: relative;
width: 98%;
}
[% END %]
[% IF ! cfg.skip_legacy_search %]
#brick2 tr th,
#brick2 tr td {
text-align: left;
}
#brick2 tr td table {
text-align: center;
width: 100%;
margin: 0 auto;
}
#brick2 tr td table td.ls-col1 {
text-align: right;
vertical-align: middle;
width: 10%;
border-right: 0;
height: 26px;
}
#brick2 tr td table td.ls-col2 {
text-align: left;
vertical-align:top;
width: 40%;
border-right: 0;
height: 26px;
}
#brick2 tr td table td.ls-col3 {
text-align: right;
vertical-align: middle;
width: 10%;
border-right: 0;
height: 26px;
}
#brick2 tr td table td.ls-col4 {
text-align: left;
vertical-align: top;
width: 40%;
border-right: 0;
height: 26px;
}
.selectors td,
.search td {
text-align: left;
}
#userselectEl,
#domainselectEl {
width: 99%;
}
.section_title {
text-align: left;
}
[% END %]
</style>
[% IF ! cfg.skip_opening_form_tag %]
<form action="[% cfg.form_tag_action_param %]" name="fmain" onsubmit="return select_user();">
<script type="text/javascript">
var dialog_opts = {
width: "400px",
fixedcenter: true,
visible: false,
modal: true,
draggable: false,
close: true,
constraintoviewport: true,
effect: {
effect: CPANEL.animate.ContainerEffect.FADE_MODAL,
duration: 0.25
}
};
var select_user_opts = YAHOO.lang.merge(dialog_opts, {
"buttons": [{
"text": "[% locale.maketext("OK") %]",
"isDefault": true,
"handler": function() {
select_user_dialog.hide();
return false;
}
}]
});
var select_user_dialog = new YAHOO.widget.SimpleDialog("sudlg", select_user_opts);
select_user_dialog.setHeader("<div class=\"lt\"></div><span>" + "[% locale.maketext("Error") %]" +
"</span><div class=\"rt\"></div>");
select_user_dialog.cfg.queueProperty("text", "[% locale.maketext('You must select an account to proceed.') %]");
select_user_dialog.render(document.body);
var select_user = function() {
var domainEl = DOM.get("domainselectEl");
var userEl = DOM.get("userselectEl");
var account_selected = (domainEl.selectedIndex !== -1) &&
(userEl.selectedIndex !== -1);
if (!account_selected) {
select_user_dialog.show();
return false;
}
}
</script>
[% END %]
[% IF data.description_text -%]
<div class="topdescriptionbox">
<p class='description'>[% data.description_text %]</p>
</div>
[% END -%]
[% IF ! cfg.skip_outer_table %]
<table>
<tr>
<td>
[% END %]
[% FOR pair = Whostmgr.FORM %]
<input type="hidden" name="[% pair.key FILTER html %]" value="[% pair.value FILTER html %]" />
[% END %]
<table id="brick1" class="datatable brick">
<tr>
<th class="section_title">[% data.selection_title ? data.selection_title : locale.maketext("Account Selection")%]</th>
</tr>
<tr>
<td class="cell col2">
<table>
<tr>
<td class="scol1">
<table>
<tr>
<td class="heavybg">[% locale.maketext('Domains') %]</td>
<td class="heavybg">[% locale.maketext('Users') %]</td>
</tr>
[% IF cfg.skip_legacy_search && cfg.show_new_search %]
<!-- AutoComplete begins -->
<tr class="search">
<td class="lightbg">
<div id="searchautocomplete2">
<input id="searchinput2">
<div id="searchcontainer2"></div>
</div>
</td>
<td class="lightbg">
<div id="searchautocomplete">
<input id="searchinput">
<div id="searchcontainer"></div>
</div>
</td>
</tr>
<!-- AutoComplete ends -->
[% END %]
[% IF cfg.skip_legacy_search && cfg.show_new_search %]
[% SET select_rows = 10 %]
[% END %]
[% IF !cfg.skip_legacy_search && !cfg.show_new_search %]
[% SET select_rows = 12 %]
[% END %]
<tr class="selectors">
<td class="lightbg">
<select size="[%select_rows%]" id="domainselectEl" name="domain" onChange="try { selectu(); } catch(e) { };">
[% cfg.userdomains.sort('domain').options_as_html( {
'value' => 'user',
'text' => 'domain',
'selected' => cfg.selected_user,
} ) -%]
</select>
</td>
<td class="lightbg">
<select size="[%select_rows%]" id="userselectEl" name="user" onChange="try { selectd(); } catch (e) {};">
[% cfg.userdomains.sort('user').options_as_html( {
'value' => 'user',
'text' => 'user',
'selected' => cfg.selected_user,
} ) -%]
</select>
</td>
</tr>
</table>
</td>
<td class="scol2">
<div id='acctinfo'><span>[% cfg.username_handling_default_text %]</span></div>
</td>
</tr>
</table>
</td>
</tr>
</table>
[% IF ! cfg.skip_legacy_search %]
<table id="brick2" class="datatable brick">
<tr>
<th>[% locale.maketext("Account Search By") %]</th>
</tr>
<tr>
<td class="cell">
<!-- AutoComplete begins -->
<table>
<tr>
<td class="ls-col1">
[% locale.maketext("Domain:") %]
</td>
<td class="ls-col2">
<div id="searchautocomplete2">
<input id="searchinput2">
<div id="searchcontainer2"></div>
</div>
</td>
<td class="ls-col3">
[% locale.maketext("User:") %]
</td>
<td class="ls-col4">
<div id="searchautocomplete">
<input id="searchinput">
<div id="searchcontainer"></div>
</div>
</td>
</tr>
</table>
<!-- AutoComplete ends -->
<br />
</td>
</tr>
</table>
[% END %]
[% IF html.additional_tr_for_form %]
<table id="brick3" class="datatable brick">
<tr>
<th align="left">[% locale.maketext("Additional Options") %]</th>
</tr>
<tr>
<td align="left" class="cell">
<table>
[% html.additional_tr_for_form %]
</table>
</td>
</tr>
</table>
[% END %]
[% IF ! cfg.skip_outer_table %]
</td>
</tr>
</table>
[% END %]
[%# FYI: This option is used in only one place, the passwdlist.tmpl and whostmgr/passwdlist endpoint %]
[% IF !data.hide_submit %]
<br /><br />
<div>
<input
type="submit"
class="btn-primary"
id="submit_userlist_form"
value="[% data.button_text FILTER html %]"
[% IF data.confirmation_text.length > 0 %]
onclick="return confirmChoice();"
[% END %]
/>
</div>
[% END %]
[% IF ! cfg.skip_closing_form_tag %]
</form>
[% END %]
[%
SET YUI_MODULES = [
'/yui/datasource/datasource.js',
'/yui/autocomplete/autocomplete.js',
'/yui/yahoo-dom-event/yahoo-dom-event.js',
'/yui/animation/animation-min.js',
'/yui/container/container-min.js'
];
FOREACH src IN YUI_MODULES;
PROCESS '_loadjs.tmpl' src;
END;
%]
[% IF cfg.use_new_pkg_hover || cfg.pkg_hover_template %]
[% PROCESS '_pkg_hover.tmpl' -%]
[% ELSE %]
[% PROCESS '_pkg_hover.tmpl' -%]
[% END%]
<script id="userdetails" type="text/html">
<table class='htable'>
<tbody>
<tr>
<th>[% locale.maketext('IP') %]</th>
<td>{ip}</td>
</tr>
<tr>
<th>[% locale.maketext('Owner') %]</th>
<td>{owner}</td>
</tr>
<tr>
<th>[% locale.maketext('Email') %]</th>
<td><a href='mailto:{email}'>{email}</a></td>
</tr>
<tr>
<th>[% locale.maketext('Start Date') %]</th>
<td>{startdate}</td>
</tr>
<tr>
<th>[% locale.maketext('Theme') %]</th><td>{cpmod}</td>
</tr>
<tr>
<th>[% locale.maketext('Package') %]</th>
<td>
<span id="ppkg_label">{ppkg}</span>
</td>
</tr>
<tr>
<th>[% locale.maketext('Disk Used') %]</th>
<td>{diskused}</td>
</tr>
<tr>
<th>[% locale.maketext('Disk Limit') %]</th>
<td>{disklimit}</td>
</tr>
</tbody>
</table>
</script>
<script id="updateing-template" type="text/html">
<span>[% locale.maketext('Updating Account Information …')%]</span>
</script>
<script id="userdetails-pkg" type="text/html">
<table class='htable'>
<tbody>
<tr>
<th>[% locale.maketext('IP') %]</th>
<td>{ip}</td>
</tr>
<tr>
<th>[% locale.maketext('Owner') %]</th>
<td>{owner}</td>
</tr>
<tr>
<th>[% locale.maketext('Email') %]</th>
<td><a href='mailto:{email}'>{email}</a></td>
</tr>
<tr>
<th>[% locale.maketext('Start Date') %]</th>
<td>{startdate}</td>
</tr>
<tr>
<th>[% locale.maketext('Theme') %]</th><td>{cpmod}</td>
</tr>
<tr>
<th>[% locale.maketext('Package') %]</th>
<td>
<a id="ppkg_link" href="javascript:void(0)" style="cursor:crosshair; cursor:help;" onmouseover="hover_pkg(this,'{ppkg_corrected}');" onmouseout="dehover_pkg(this,'{ppkg_corrected}');">{ppkg}</a>
</td>
</tr>
<tr>
<th>[% locale.maketext('Disk Used') %]</th>
<td>{diskused}</td>
</tr>
<tr>
<th>[% locale.maketext('Disk Limit') %]</th>
<td>{disklimit}</td>
</tr>
</tbody>
</table>
</script>
<script type="text/javascript">
//<![CDATA[
CPANEL.util.prevent_submit('searchinput');
CPANEL.util.prevent_submit('searchinput2');
var prefetchacctinfo = 0;
var userNameChanged = [% js.username_handling_js_function_name || 'null'%];
function selectd() {
var users = document.fmain.user;
var domains = document.fmain.domain;
var thisUser = (users.options[users.selectedIndex].value ||
users.options[users.selectedIndex].text);
for(var i = 0, l = users.options.length; i < l; i++) {
if (domains.options[i].value == thisUser) {
domains.selectedIndex = i;
if(userNameChanged) {
userNameChanged(thisUser);
}
break;
}
}
}
function selectu() {
var users = document.fmain.user;
var domains = document.fmain.domain;
var thisDomain = domains.options[domains.selectedIndex].value
for(var i = 0, l = domains.options.length; i < l; i++) {
if (users.options[i].value == domains.options[domains.selectedIndex].value ||
users.options[i].text == domains.options[domains.selectedIndex].value) {
users.selectedIndex = i;
if(userNameChanged) {
userNameChanged(thisDomain);
}
break;
}
}
}
var FRAGMENT_TEMPLATE_CACHE = {};
function updateUserInfo(o) {
var jsonResponse = YAHOO.lang.JSON.parse(o.responseText);
var accts = jsonResponse.acct;
var acct;
if (accts) {
acct = accts[0];
}
var acctinfo = DOM.get('acctinfo');
if (acct) {
var owner = acct.owner;
var email = acct.email;
var startdate = acct.startdate;
var cpmod = acct.theme || acct.cpmod;
cpmod = cpmod.html_encode()
var ip = acct.ip;
var ppkg = acct.plan;
var ppkg_encoded = ppkg.html_encode();
var ppkg_corrected = ppkg_encoded.replace(/'/,"\\'");
var diskused = acct.diskused;
var disklimit = acct.disklimit;
var newhtml = "";
if(typeof ppkg === "undefined") {
if(!FRAGMENT_TEMPLATE_CACHE["userdetails"]) {
FRAGMENT_TEMPLATE_CACHE["userdetails"] = DOM.get("userdetails").text;
}
newhtml = FRAGMENT_TEMPLATE_CACHE["userdetails"];
}
else {
if(!FRAGMENT_TEMPLATE_CACHE["userdetails-pkg"]) {
FRAGMENT_TEMPLATE_CACHE["userdetails-pkg"] = DOM.get("userdetails-pkg").text;
}
newhtml = FRAGMENT_TEMPLATE_CACHE["userdetails-pkg"];
}
newhtml = YAHOO.lang.substitute(newhtml, {
"owner" : owner,
"email" : email,
"startdate" : startdate,
"cpmod" : cpmod,
"ip" : ip,
"ppkg" : ppkg_encoded,
"ppkg_corrected" : ppkg_corrected,
"diskused" : diskused,
"disklimit" : disklimit
});
DOM.setStyle(acctinfo, "vertical-align", "top");
DOM.setStyle(acctinfo.parentNode, "vertical-align", "top");
acctinfo.innerHTML = newhtml;
}
else {
acctinfo.innerHTML = jsonResponse.statusmsg.html_encode();
}
}
var acctinforequest;
function showacctinfo(usernameXX) {
if ( acctinforequest ) {
YAHOO.util.Connect.abort(acctinforequest);
}
var url = '[% cp_security_token %]/json-api/accountsummary?user=' + usernameXX;
var callback = {
success:updateUserInfo
};
var acctinfo = DOM.get('acctinfo');
if(!FRAGMENT_TEMPLATE_CACHE["updateing-template"]) {
FRAGMENT_TEMPLATE_CACHE["updateing-template"] = DOM.get("updateing-template").text;
}
newhtml = FRAGMENT_TEMPLATE_CACHE["updateing-template"];
DOM.setStyle(acctinfo, "vertical-align", "middle");
DOM.setStyle(acctinfo.parentNode, "vertical-align", "middle");
acctinfo.innerHTML = newhtml;
acctinforequest = YAHOO.util.Connect.asyncRequest('GET', url, callback );
}
[% js.username_handling_js %]
var UserListAutoComp, DomainListAutoComp, prompt;
var promptText = [% data.confirmation_text.json() || "null" %];
function confirmChoice() {
var result = select_user();
if (result === false) {
// do not submit the form
return false;
}
if (typeof promptText === "undefined" || promptText === null || promptText === "") {
// submit the form since there is no prompt set up
return true;
}
prompt.show();
return false; // let the prompt handle submitting the form
}
function initOC () {
// Instantiate first JS Array DataSource
usersArray = [% cfg.users_array.json() %];
[%# this way the list is only sent over the wire once -%]
// slice copies the array
domainsArray = usersArray.map( function(ud) { return ud.slice(0).reverse() } ).sort_by(0);
// Process the uses
var userDS = new YAHOO.widget.DS_JSArray(usersArray);
userDS.responseSchema = {fields:['user','domain']};
UserListAutoComp = new YAHOO.widget.AutoComplete('searchinput','searchcontainer', userDS);
UserListAutoComp.queryDelay = 0;
UserListAutoComp.typeAhead = false;
UserListAutoComp.useShadow = true;
UserListAutoComp.minQueryLength = 2;
UserListAutoComp.forceSelection = true;
UserListAutoComp.itemSelectEvent.subscribe(
function(oSelf,elItem,oData){
var users = document.fmain.user;
var newuser = elItem[2].user;
for(var i = 0; i < users.options.length; i++) {
if (users.options[i].value == newuser || users.options[i].text == newuser ) {
users.selectedIndex = i;
DOM.get('searchinput2').value = elItem[2].domain;
selectd();
break;
}
}
}
);
UserListAutoComp.resultTypeList = false;
UserListAutoComp.formatResult = function(oResultData, sQuery, sResultMatch) {
return oResultData.user + " (" + oResultData.domain + ")";
};
// Process the domains
var domainDS = new YAHOO.widget.DS_JSArray(domainsArray);
domainDS.responseSchema = {fields:['domain','user']};
DomainListAutoComp = new YAHOO.widget.AutoComplete('searchinput2','searchcontainer2', domainDS);
DomainListAutoComp.queryDelay = 0;
DomainListAutoComp.typeAhead = false;
DomainListAutoComp.useShadow = true;
DomainListAutoComp.minQueryLength = 2;
DomainListAutoComp.forceSelection = true;
DomainListAutoComp.itemSelectEvent.subscribe(
function(oSelf,elItem,oData){
var users = document.fmain.user;
var newuser = elItem[2].user;
for(var i = 0; i < users.options.length;i++) {
if (users.options[i].value == newuser || users.options[i].text == newuser ) {
users.selectedIndex = i;
DOM.get('searchinput').value = elItem[2].user;
selectd();
break;
}
}
}
);
DomainListAutoComp.resultTypeList = false;
DomainListAutoComp.formatResult = function(oResultData, sQuery, sResultMatch) {
return oResultData.domain + " (" + oResultData.user + ")";
};
// Handle preloading
if (prefetchacctinfo) {
selectu();
}
else {
// Handle refreshes or back navigation
if(document.fmain.domain.selectedIndex != -1) {
selectd();
}
else if(document.fmain.user.selectedIndex != -1) {
selectu();
}
}
if (!(typeof promptText === "undefined" || promptText === null || promptText === "")) {
var prompt_opts = YAHOO.lang.merge(dialog_opts, {
"buttons": [{
"text": "[% locale.maketext("Proceed") %]",
"handler": function() {
prompt.hide();
document.forms["fmain"].submit();
return true;
},
},{
"text": "[% locale.maketext("Cancel") %]",
"isDefault": true,
"handler": function() {
prompt.hide();
return false;
}
}]
});
prompt = new YAHOO.widget.SimpleDialog("sdlg", prompt_opts);
prompt.setHeader("<div class=\"lt\"></div><span>" + "[% locale.maketext("Confirm Deletion") %]" +
"</span><div class=\"rt\"></div>");
prompt.cfg.queueProperty("text", promptText);
prompt.render(document.body);
}
}
YAHOO.util.Event.addListener(this, 'load', initOC);
[% IF cfg.selected_user %]
prefetchacctinfo = 1;
[% END %]
//]]>
</script>
Back to Directory
File Manager