Current File : //root/panel/modules/mailboxes/module.zpm
<style type='text/css'>

.progress {
        border: 2px solid #8be45e;
		height: 5px;
		width: 87px;
		margin: 5px auto auto -4px;
}
.progress .prgbar {
        background: #289240;
        width: <?php echo $dp; ?>%;
        position: relative;
        height: 5px;
        z-index: 999;
}
.helpicon {
display: block;
float: right;
border: 1px solid #ccc;
background-color: #f3f3f3;
padding: 5px 10px;
font-size: 15px;    
-webkit-box-shadow: -8px 7px 5px 0px rgba(204,204,204,1);
-moz-box-shadow: -8px 7px 5px 0px rgba(204,204,204,1);    
box-shadow: -8px 7px 5px 0px rgba(204,204,204,1);    
-webkit-box-shadow: 8px 7px 5px 0px rgba(204,204,204,1);
-moz-box-shadow: 8px 7px 5px 0px rgba(204,204,204,1);
box-shadow: 8px 7px 5px 0px rgba(204,204,204,1);
}
#button-font {
	
	font-size: 14px;
	
	}
</style>
<script>
   $(document).ready(function() {

    var names = ['test', 'test123'];

    $('#inCreate').click(function() {
        var name = $('#inAddress').val();
        if (jQuery.inArray(name, names)!='-1') {
            alert(name + ' is the restricted username!');
		$('#inAddress').val("");
            //$('#button').attr('disabled', 'disabled');
        } 
    });
 });
</script>

<script>
/*
	jQuery document ready.
*/
$(document).ready(function()
{
	/*
		assigning keyup event to password field
		so everytime user type code will execute
	*/

        if($('#inPassword').val().length ==0){

               $('#inCreate').attr('disabled', 'disabled');
        	}
	$('#inPassword').keyup(function()
	{
            
              $('#result').html(checkStrength($('#inPassword').val()))
		

	})	
		
        
	/*
		checkStrength is function which will do the 
		main password strength checking for us
	*/
	
	function checkStrength(password)
	{
		//initial strength
		var strength = 0
		
		//if the password length is less than 6, return message.
		if (password.length < 6) { 
			$('#result').removeClass();
			$('#result').addClass('short');
			$('#inCreate').attr('disabled','disabled');
			return 'Too short'; 
		}
		
		//length is ok, lets continue.
		
		//if length is 8 characters or more, increase strength value
		//if (password.length > 7) strength += 1
		
		//if password contains both lower and uppercase characters, increase strength value
		//if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))  strength += 1
		
		//if it has numbers and characters, increase strength value
		//if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/))  strength += 1 
		
		//if it has one special character, increase strength value
		//if (password.match(/([!,%,&,@,#,$,^,*,?,_,~])/))  strength += 1
		
		//if it has two special characters, increase strength value
		//if (password.match(/(.*[!,%,&,@,#,$,^,*,?,_,~].*[!,%,&,@,#,$,^,*,?,_,~])/)) strength += 1
	
                if(password.match(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{9,}$/))
                strength = 9
	
		//now we have calculated strength value, we can return messages
		
		//if value is less than 2
		if (strength <9 )
		{
			$('#result').removeClass();
			$('#result').addClass('weak');
			$('#inCreate').attr('disabled','disabled');			
                        return 'Weak'			
		}
		else if (strength >= 9 )
		{
			$('#result').removeClass();
			$('#result').addClass('strong');
                        // $("#pwdstr").show();	
                        $('#inCreate').removeAttr('disabled');	
			return 'Strong'		
		}
		else
		{
			$('#result').removeClass();
			$('#result').addClass('strong');
                        // $("#pwdstr").show();
                        $('#inCreate').removeAttr('disabled');	
			return 'Strong'
		}
	}
});
</script>

<div class="helpicon">
<!--<a href="<@ helpicon @>" target="_blank"><img src="etc/styles/CstyleX-master/images/help.png" Style="vertical-align: middle;" ><b>Video Tutorial<b></a>-->
<a href="<@ helpicon @>" target="_blank"><img src="etc/styles/CstyleX-master/images/help.png" style="float:left;" ><span style="float:left;margin-top:8px;font-weight:bold;" >Video Tutorial</span></a>
</div>
<div class="zmodule_content panel" id="zmodule_header_<@ ModuleName @>">
    <div class="panel-heading">
        <img src="<@ ModuleIcon @>" width="35" height="35" border="0" alt="<@ ModuleName @>">

        <div class="zmodule_title">
            <@ ModuleName @>
        </div>

        <div class="zmodule_desc" id="zmodule_desc_<@ ModuleName @>"><@ ModuleDesc @></div>

    </div>

    <@ Result @>

    <% if isDeleteMailbox %>
    <div class="zform_wrapper alert alert-danger">
        <h2><: Delete Mailbox :>: <@ EditCurrentMailboxName @> ?</h2>
        <p><: Please confirm that you want to delete this mailbox. :></p>
        <form action="./?module=mailboxes&action=ConfirmDeleteMailbox" method="post" autocomplete="off" >
            <table class="none" cellpadding="0" cellspacing="0">
                <tr>
                    <td colspan="2" align="right">
                        <input type="hidden" name="inDelete" value="<@ EditCurrentMailboxID @>">
                        <button class="button-loader delete btn btn-danger" type="submit" ><: Delete :></button>
                        <button class="button-loader btn btn-default" type="button" onclick="window.location.href='./?module=mailboxes';return false;"><: Cancel :></button>
                    </td>
                </tr>
            </table>
            <@ CSFR_Tag @>
        </form>
    </div>
    <% endif %>

    <% if isEditMailbox %>
    <div class="zform_wrapper">
        <h2><: Edit mailbox :>: <@ EditCurrentMailboxName @></h2>
        <form action="./?module=mailboxes&action=UpdateMailbox" method="post" autocomplete="off"  >
		<input type="hidden" name="flag" id="flag" value="pwd" />
            <table class="table table-striped">
                <% loop CurrentMailboxList %>
                <tr>
                    <th><: Email Address :>:</th>
                    <td><& address &></td>
                </tr>
                <tr>
                    <th><: Set Password :>:</th>
                    <td><input type="text" name="inPassword" id="<@ CurrentID @>" /></td>
                </tr>
				
				<tr>
				    <th></th>
				    <td><span id="result"></span></td>
				    <td><a href="#" class="link-password" id="generate"><@ GeneratePass @></a></td>
				    <td></td>
                </tr>	
	
                <% endloop %>
                <tr>
                    <th><: Enabled :>:</th>
                    <td><input type="checkbox" name="inEnabled" id="inEnabled" value="1" <& ischeck &> /></td>
                </tr>
                <tr>
                    <th>
                        <button class="button-loader btn btn-primary" type="submit" name="inSave" id="inSave" value="<& id &>"><: Save :></button>
                        <button class="button-loader btn btn-default" type="button" onclick="window.location.href='./?module=mailboxes';return false;"><: Cancel :></button>
                    </th>
                    <td></td>
                </tr>

            </table>
            <@ CSFR_Tag @>
        </form>
                   <% if currentnote %>
                    <p><b>Note : </b>Characters needed for password length : 9 with atleast 1 uppercase,lowercase,special character,number.<ip>
                   <% endif %>

    </div>
    <% endif %>
 <% if isquotaEditMailbox %>
    <div class="zform_wrapper">
        <h2><: Edit mailbox :>: <@ EditCurrentMailboxName @></h2>
        <form action="./?module=mailboxes&action=UpdateMailbox" method="post" autocomplete="off"  >
		<input type="hidden" name="flag" id="flag" value="quota" />
            <table class="table table-striped">
                <% loop CurrentMailboxList %>
                <tr>
                    <th><: Email Address :>:</th>
                    <td><& address &></td>
                </tr>	
				<tr>
                 <th nowrap="nowrap"><: Quota (in MB) :>:</th>
                <td><input type="text" name="inQuota" id="inQuota" onkeypress="javascript:return isNumber(event);" value="<& quota &>"  maxlength="4" /></td>
                </tr>
							
							
                <% endloop %>
            
                <tr>
                    <th>
                        <button class="button-loader btn btn-primary" type="submit" name="inSave" id="inSave" value="<& id &>"><: Save :></button>
                        <button class="button-loader btn btn-default" type="button" onclick="window.location.href='./?module=mailboxes';return false;"><: Cancel :></button>
                    </th>
                    <td></td>
                </tr>
            </table>
            <@ CSFR_Tag @>
        </form>
    </div>
 <% endif %>
<% if ismailperhrlimit %>
    <div class="zform_wrapper">
        <h2><: Edit mailbox :>: <@ EditCurrentMailboxName @></h2>
        <form action="./?module=mailboxes&action=UpdateMailbox" method="post" autocomplete="off"  >
		<input type="hidden" name="flag" id="flag" value="mailperhrlimitquota" />
            <table class="table table-striped">
                <% loop CurrentMailboxList %>
                <tr>
                    <th><: Email Address :>:</th>
                    <td><& address &></td>
                </tr>	
				<tr>
                 <th nowrap="nowrap"><: Quota (Outgoing Mails Per Day) :>:</th>
                <td><input type="text" name="mailperhrlimit" id="mailperhrlimit" onkeypress="javascript:return isNumber(event);" value="<& mailperhrlimitquota &>"  maxlength="4" /></td>
                </tr>
							
							
                <% endloop %>
            
                <tr>
                    <th>
                        <button class="button-loader btn btn-primary" type="submit" name="inSave" id="inSave" value="<& id &>"><: Save :></button>
                        <button class="button-loader btn btn-default" type="button" onclick="window.location.href='./?module=mailboxes';return false;"><: Cancel :></button>
                    </th>
                    <td></td>
                </tr>
            </table>
            <@ CSFR_Tag @>
        </form>
    </div>
 <% endif %>	 
    <div class="zgrid_wrapper">
        <h2><: Current mailboxes :></h2>
        <% if MailboxList %>
            <table class="table table-striped">
		<col width="22%">
		<col width="5%">
		<col width="15%">
		<col width="58%">
                <tr>
                    <th><: Address :></th>
                    <th><: Status :></th>
					<th><: Used/Quota Total(in MB) :></th>
                    <th></th>
                </tr>
                <% loop MailboxList %>
                <tr>

        		<form action="./?module=mailboxes&action=EditMailbox" method="post" autocomplete="off" >
				<td style="max-width: 250px; display: inline-block; word-wrap: break-word;"><& address &></td>
				<td><& status &></td>
				<td><& used &>/<& quota &><& progress &></td>
				<td><button class="button-loader btn btn-default" id ="button-font" type="submit" name="inEdit_<& id &>" id="inEdit_<& id &>" value="inEdit_<& id &>"><: Edit :></button>
				<button class="button-loader delete btn btn-danger" id ="button-font" type="submit" name="inDelete_<& id &>" id="inDelete_<& id &>" value="inDelete_<& id &>"><: Delete :></button>
				<button class="button-loader btn btn-default" id ="button-font" type="submit" name="inquotaEdit_<& id &>" id="inquotaEdit_<& id &>" value="inquotaEdit_<& id &>"><: Edit MB Quota :></button>
				<button class="button-loader btn btn-default" id ="button-font" type="submit" name="inquotaEditMaillimit_<& id &>" id="inquotaEditMaillimit_<& id &>" value="inquotaEditMaillimit_<& id &>"><: Edit Mail Limit :></button>
            		<@ CSFR_Tag @>
        		</form>
			<form id="rcLogin" name="rcLogin" method="post" action="http://<& ip_address &>:2095?_task=autologin" target="_blank" style="display: contents;">
				<input type="hidden" name="_action" value="autologin" />
				<input type="hidden" name="_autouser" value="<& address &>" />
				<input type="hidden" name="_autopass" value="<& encrypted_pass &>" />
				<input type="hidden" name="_encrypt_key" value="<& encrypt_key &>" />
				<button class="btn btn-default" tid ="button-font" ype="submit" name="submit" value="" />Access Webmail</button>
                        </form>
                    </td>
                </tr>
                <% endloop %>
            </table>
        <% else %><!-- ELSE MailboxList -->
        <: Sorry there are currently no mailboxes configured! :>
        <% endif %><!-- END MailboxList -->
    </div>

    <% if isCreateMailbox %>
    <div class="zgrid_wrapper">
        <table class="none" width="100%" cellborder="0" cellspacing="0">
            <tr valign="top">
                <td>
                    <h2><: Create a new mailbox :></h2>
                    <% if QuotaLimit %>
                    <form action="./?module=mailboxes&action=AddMailbox" method="post" autocomplete="off" id="register" >
                        <table class="table table-striped">
                            <tr>
                                <th nowrap="nowrap"><: Email Address :>:</th>
                                <td><input type="text" name="inAddress" id="inAddress" maxlength="64"/></td>
                                <td>
                                    <select name="inDomain" id="inDomain">
                                        <option value="" selected="selected">-- <: Select a domain :> --</option>
                                        <% loop DomainList %>
                                        <option value="<& domain &>">@<& domain &></option>
                                        <% endloop %>
                                    </select>
                                </td>
                            </tr>
                            <tr>
                                <th nowrap="nowrap"><: Password :>:</th>
                                <td><input type="text" name="inPassword" id="<@ CurrentID @>" /></td>
                                <td><span id="result"></span></td>
                            </tr>
							 <tr>
								<th></th>
								<td><span id="result"></span></td>
								<td><a href="#" class="link-password" id="generate"><@ GeneratePass @></a></td>
								<td></td>
							</tr>
				
							<tr>
                                <th nowrap="nowrap"><: Quota (in MB) :>:</th>
                                <td><input type="text" name="inQuota" id="inQuota" onkeypress="javascript:return isNumber(event);" maxlength="4"  /></td>
                                <td></td>
                            </tr>
							<tr>
                                <th nowrap="nowrap"><: Quota (Outgoing Mails Per Day) :>:</th>
                                <td><input type="text" name="mailperhrlimit" id="mailperhrlimit" onkeypress="javascript:return isNumber(event);" maxlength="4"  /></td>
                                <td></td>
                            </tr>
						    		
						    	
							
                            <tr>
                                <th></th>
                                <td><button class="button-loader btn btn-primary" type="submit" name="inCreate" id="inCreate" value="inCreate"><: Create :></button></td>
                                <td></td>
                            </tr>
                        </table>
                        <@ CSFR_Tag @>
                     </form>
                     <% if currentnote %>
                    <p><b>Note : </b>Characters needed for password length : 9 with atleast 1 uppercase,lowercase,special character,number.</p>
                       <p><b>Tutorial:</b></p>
                       <a href="https://www.hostingraja.in/how-tos1/81-emails/354-content" target="_blank">How to Configure E-Mail in Outlook ?</a><br/>
                       <a href="https://www.hostingraja.in/wiki/configuring-e-mail-in-android-phones" target="_blank">How to Configure E-Mail in Android Phones ?</a><br/>
                       <a href="https://www.hostingraja.in/wiki/setting-up-pop-imap-email-on-an-iphone" target="_blank">How to Configure E-Mail in iPhones ?</a><br/>
                       <a href="https://www.hostingraja.in/how-tos/81-emails/135-5-how-to-configure-my-email-in-email-clients" target="_blank">How to Configure my email in Email clients ?</a><br/>
                       <a href="https://www.youtube.com/watch?v=PguVmqVE8fo&feature=youtu.be" target="_blank">How to Configure Sender Name in Webmail E-Mail Accounts ?</a><br/>   
			<% endif %>
                    <% else %><!-- ELSE QuotaLimit -->
                    <: Sorry, you have reached your mailbox quota limit! :>
                    <% endif %><!-- END QuotaLimit -->
                </td>
                <td align="right"><@ EmailUsagepChart @></td>
            </tr>
        </table>
    </div>
    <% endif %>


</div>
<script type="text/javascript">
    // WRITE THE VALIDATION SCRIPT IN THE HEAD TAG.
    function isNumber(evt) {
     /*   var iKeyCode = (evt.which) ? evt.which : evt.keyCode
        if (iKeyCode != 46 && iKeyCode > 31 && (iKeyCode < 48 || iKeyCode > 57))
            return false;
        return true;
    */
	return ( evt.which!=8 && evt.which!=0 && (evt.which<48 || evt.which>57)) ? false : true ;
	}    
</script>
<style>
input
{
margin:5px 0; 
}
table th, td
{
vertical-align:middle;
}
</style>	

<style>
#register .short{
font-weight:bold;
color:#FF0000;
font-size:larger;
}
#register .weak{
font-weight:bold;
color:orange;
font-size:larger;
}
#register .good{
font-weight:bold;
color:#2D98F3;
font-size:larger;
}
#register .strong{
font-weight:bold;
color: limegreen;
font-size:larger;
}

</style>

<script type="text/JavaScript">
    $.extend({
        password: function (length, special) {
            var iteration = 0;
            var password = "";
            var specials = '!@#$&*';
	    var lowercase = 'abcdefghijklmnopqrstuvwxyz';
            var uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
            var numbers = '0123456789';

            var all = specials + lowercase + uppercase + numbers;

            String.prototype.pick = function(min, max) {
    		var n, chars = '';

    		if (typeof max === 'undefined') {
    	    		n = min;
    		} else {
        		n = min + Math.floor(Math.random() * (max - min));
    		}

    		for (var i = 0; i < n; i++) {
        		chars += this.charAt(Math.floor(Math.random() * this.length));
    		}

    		return chars;
	    };


            // Credit to @Christoph: http://stackoverflow.com/a/962890/464744

	    String.prototype.shuffle = function() {
	    	var array = this.split('');
	    	var tmp, current, top = array.length;

	    	if (top) while (--top) {
			current = Math.floor(Math.random() * (top + 1));
			tmp = array[current];
			array[current] = array[top];
			array[top] = tmp;
	    	}

	        return array.join('');
	    };

	    var password = (specials.pick(1) + lowercase.pick(1) + uppercase.pick(1) + numbers.pick(1) + all.pick(5)).shuffle();

	    return password;
        }
    });
    $(document).ready(function() {
        
    });
</script>

<script>
/*
	jQuery document ready.
*/
$(document).ready(function()
{
	/*

		assigning keyup event to password field

		so everytime user type code will execute

	*/

	$('.link-password').click(function(e){
            linkId = $(this).attr('id');
            if (linkId == 'generate'){
                password = $.password(9,false);
                $('#inPassword').val(password);
          	$('#result').html(checkStrength($('#inPassword').val()));
            }

            e.preventDefault();
        });	

        if($('#inPassword').val().length ==0){

               $('#inCreate').attr('disabled', 'disabled');
        	}
	$('#inPassword').keyup(function()
	{
            
              $('#result').html(checkStrength($('#inPassword').val()))
		

	})	
		
        
	/*
		checkStrength is function which will do the 

		main password strength checking for us

	*/
	
	function checkStrength(password)
	{
		//initial strength
		var strength = 0
		
		//if the password length is less than 6, return message.
		if (password.length < 6) { 
			$('#result').removeClass();
			$('#result').addClass('short');
			$('#inCreate').attr('disabled','disabled');
			return 'Too short'; 
		}
		
		//length is ok, lets continue.
		
		//if length is 8 characters or more, increase strength value
		if (password.length > 7) strength += 1
		
		//if password contains both lower and uppercase characters, increase strength value
		if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))  strength += 1
		
		//if it has numbers and characters, increase strength value
		if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/))  strength += 1 
		
		//if it has one special character, increase strength value
		if (password.match(/([!,%,&,@,#,$,^,*,?,_,~])/))  strength += 1
		
		//if it has two special characters, increase strength value
		if (password.match(/(.*[!,%,&,@,#,$,^,*,?,_,~].*[!,%,&,@,#,$,^,*,?,_,~])/)) strength += 1
		
		//now we have calculated strength value, we can return messages
		
		//if value is less than 2
		if (strength <2 )
		{
			$('#result').removeClass();
			$('#result').addClass('weak');
			$('#inCreate').attr('disabled','disabled');			
                        return 'Weak'			
		}
		else if (strength == 2 )
		{
			$('#result').removeClass();
			$('#result').addClass('good');
                        // $("#inCreate").show();	
                        $('#inCreate').removeAttr('disabled');	
			return 'Good'		
		}
		else
		{
			$('#result').removeClass();
			$('#result').addClass('strong');
                        // $("#inCreate").show();
                        $('#inCreate').removeAttr('disabled');	
			return 'Strong'
		}
	}
});
</script>