Members-Manager/site/models/forms/member.js

540 lines
16 KiB
JavaScript

/**
* @package Joomla.Members.Manager
*
* @created 6th September, 2015
* @author Llewellyn van der Merwe <https://www.joomlacomponentbuilder.com/>
* @github Joomla Members Manager <https://github.com/vdm-io/Joomla-Members-Manager>
* @copyright Copyright (C) 2015. All Rights Reserved
* @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*/
// Some Global Values
jform_vvvvvvvvvv_required = false;
jform_vvvvvvwvvw_required = false;
jform_vvvvvvwvvx_required = false;
jform_vvvvvvxvvy_required = false;
// Initial Script
jQuery(document).ready(function()
{
var account_vvvvvvv = jQuery("#jform_account").val();
vvvvvvv(account_vvvvvvv);
var account_vvvvvvw = jQuery("#jform_account").val();
vvvvvvw(account_vvvvvvw);
var account_vvvvvvx = jQuery("#jform_account").val();
vvvvvvx(account_vvvvvvx);
});
// the vvvvvvv function
function vvvvvvv(account_vvvvvvv)
{
if (isSet(account_vvvvvvv) && account_vvvvvvv.constructor !== Array)
{
var temp_vvvvvvv = account_vvvvvvv;
var account_vvvvvvv = [];
account_vvvvvvv.push(temp_vvvvvvv);
}
else if (!isSet(account_vvvvvvv))
{
var account_vvvvvvv = [];
}
var account = account_vvvvvvv.some(account_vvvvvvv_SomeFunc);
// set this function logic
if (account)
{
jQuery('#jform_main_member').closest('.control-group').show();
// add required attribute to main_member field
if (jform_vvvvvvvvvv_required)
{
updateFieldRequired('main_member',0);
jQuery('#jform_main_member').prop('required','required');
jQuery('#jform_main_member').attr('aria-required',true);
jQuery('#jform_main_member').addClass('required');
jform_vvvvvvvvvv_required = false;
}
}
else
{
jQuery('#jform_main_member').closest('.control-group').hide();
// remove required attribute from main_member field
if (!jform_vvvvvvvvvv_required)
{
updateFieldRequired('main_member',1);
jQuery('#jform_main_member').removeAttr('required');
jQuery('#jform_main_member').removeAttr('aria-required');
jQuery('#jform_main_member').removeClass('required');
jform_vvvvvvvvvv_required = true;
}
}
}
// the vvvvvvv Some function
function account_vvvvvvv_SomeFunc(account_vvvvvvv)
{
// set the function logic
if (account_vvvvvvv == 3 || account_vvvvvvv == 4)
{
return true;
}
return false;
}
// the vvvvvvw function
function vvvvvvw(account_vvvvvvw)
{
if (isSet(account_vvvvvvw) && account_vvvvvvw.constructor !== Array)
{
var temp_vvvvvvw = account_vvvvvvw;
var account_vvvvvvw = [];
account_vvvvvvw.push(temp_vvvvvvw);
}
else if (!isSet(account_vvvvvvw))
{
var account_vvvvvvw = [];
}
var account = account_vvvvvvw.some(account_vvvvvvw_SomeFunc);
// set this function logic
if (account)
{
jQuery('#jform_password_check').closest('.control-group').show();
jQuery('#jform_useremail').closest('.control-group').show();
// add required attribute to useremail field
if (jform_vvvvvvwvvw_required)
{
updateFieldRequired('useremail',0);
jQuery('#jform_useremail').prop('required','required');
jQuery('#jform_useremail').attr('aria-required',true);
jQuery('#jform_useremail').addClass('required');
jform_vvvvvvwvvw_required = false;
}
jQuery('#jform_username').closest('.control-group').show();
// add required attribute to username field
if (jform_vvvvvvwvvx_required)
{
updateFieldRequired('username',0);
jQuery('#jform_username').prop('required','required');
jQuery('#jform_username').attr('aria-required',true);
jQuery('#jform_username').addClass('required');
jform_vvvvvvwvvx_required = false;
}
jQuery('#jform_password').closest('.control-group').show();
jQuery('#jform_user').closest('.control-group').show();
}
else
{
jQuery('#jform_password_check').closest('.control-group').hide();
jQuery('#jform_useremail').closest('.control-group').hide();
// remove required attribute from useremail field
if (!jform_vvvvvvwvvw_required)
{
updateFieldRequired('useremail',1);
jQuery('#jform_useremail').removeAttr('required');
jQuery('#jform_useremail').removeAttr('aria-required');
jQuery('#jform_useremail').removeClass('required');
jform_vvvvvvwvvw_required = true;
}
jQuery('#jform_username').closest('.control-group').hide();
// remove required attribute from username field
if (!jform_vvvvvvwvvx_required)
{
updateFieldRequired('username',1);
jQuery('#jform_username').removeAttr('required');
jQuery('#jform_username').removeAttr('aria-required');
jQuery('#jform_username').removeClass('required');
jform_vvvvvvwvvx_required = true;
}
jQuery('#jform_password').closest('.control-group').hide();
jQuery('#jform_user').closest('.control-group').hide();
}
}
// the vvvvvvw Some function
function account_vvvvvvw_SomeFunc(account_vvvvvvw)
{
// set the function logic
if (account_vvvvvvw == 1 || account_vvvvvvw == 4)
{
return true;
}
return false;
}
// the vvvvvvx function
function vvvvvvx(account_vvvvvvx)
{
if (isSet(account_vvvvvvx) && account_vvvvvvx.constructor !== Array)
{
var temp_vvvvvvx = account_vvvvvvx;
var account_vvvvvvx = [];
account_vvvvvvx.push(temp_vvvvvvx);
}
else if (!isSet(account_vvvvvvx))
{
var account_vvvvvvx = [];
}
var account = account_vvvvvvx.some(account_vvvvvvx_SomeFunc);
// set this function logic
if (account)
{
jQuery('#jform_email').closest('.control-group').show();
// add required attribute to email field
if (jform_vvvvvvxvvy_required)
{
updateFieldRequired('email',0);
jQuery('#jform_email').prop('required','required');
jQuery('#jform_email').attr('aria-required',true);
jQuery('#jform_email').addClass('required');
jform_vvvvvvxvvy_required = false;
}
}
else
{
jQuery('#jform_email').closest('.control-group').hide();
// remove required attribute from email field
if (!jform_vvvvvvxvvy_required)
{
updateFieldRequired('email',1);
jQuery('#jform_email').removeAttr('required');
jQuery('#jform_email').removeAttr('aria-required');
jQuery('#jform_email').removeClass('required');
jform_vvvvvvxvvy_required = true;
}
}
}
// the vvvvvvx Some function
function account_vvvvvvx_SomeFunc(account_vvvvvvx)
{
// set the function logic
if (account_vvvvvvx == 2 || account_vvvvvvx == 3)
{
return true;
}
return false;
}
// update required fields
function updateFieldRequired(name,status)
{
var not_required = jQuery('#jform_not_required').val();
if(status == 1)
{
if (isSet(not_required) && not_required != 0)
{
not_required = not_required+','+name;
}
else
{
not_required = ','+name;
}
}
else
{
if (isSet(not_required) && not_required != 0)
{
not_required = not_required.replace(','+name,'');
}
}
jQuery('#jform_not_required').val(not_required);
}
// the isSet function
function isSet(val)
{
if ((val != undefined) && (val != null) && 0 !== val.length){
return true;
}
return false;
}
jQuery(document).ready(function($)
{
var tokenValue = jQuery('#jform_token').val();
// check if this token value is used
checkUnique(tokenValue, 'token', 0);
// load the profile image if it is set
var profile = $('#jform_profile_image').val();
if (profile.length > 20)
{
setFile(profile, false, 'profile', 'image')
}
});
function getUserDetails(user){
getUserDetails_server(user).done(function(result) {
if (result) {
setUserDetails(result);
}
});
}
function getUserDetails_server(user){
var getUrl = JRouter("index.php?option=com_membersmanager&task=ajax.getUserDetails&format=json&vdm="+vastDevMod);
if(token.length > 0 && user > 0){
var request = 'token='+token+'&user='+user;
}
return jQuery.ajax({
type: 'GET',
url: getUrl,
dataType: 'jsonp',
data: request,
jsonp: 'callback'
});
}
function setUserDetails(result){
if (result.name) {
for (var key in result) {
if (result.hasOwnProperty(key)) {
jQuery('#jform_' + key).val(result[key]);
}
}
}
}
function setFilekey(filename, fileFormat, target, type){
var currentFileName = jQuery("#jform_"+target+"_"+type).val();
if (currentFileName.length > 20 && (type === 'image' || type === 'document')){
// remove file from server
removeFile_server(currentFileName, target, 2, type);
}
// set new key
if ((filename.length > 20 && (type === 'image' || type === 'document')) || (isJsonString(filename) && (type === 'images' || type === 'documents' || type === 'media'))){
if((type === 'images' || type === 'documents' || type === 'media') && jQuery("#jform_id").val() == 0 && isJsonString(currentFileName)) {
var newA = jQuery.parseJSON(currentFileName);
var newB = jQuery.parseJSON(filename);
var filename = JSON.stringify(jQuery.merge(newA, newB));
}
jQuery("#jform_"+target+"_"+type).val(filename);
// set the FILE
return setFile(filename, fileFormat, target, type);
}
return false;
}
function setFile(filename, fileFormat, target, type){
if (type === 'image' || type === 'document') {
if (!target) {
target = filename.split('_')[0];
}
if (!type) {
type = filename.split('_')[1];
}
if (!fileFormat) {
fileFormat = filename.split('_')[2];
}
var isAre = 'is';
} else if ((type === 'images' || type === 'documents' || type === 'media') && isJsonString(filename) ) {
filename = jQuery.parseJSON(filename);
if (!target) {
target = filename[0].split('_')[0];
}
if (!type) {
type = filename[0].split('_')[1];
}
var isAre = 'are';
} else {
return false;
}
// set icon
if (type === 'images' || type === 'image') {
var icon = 'file-image-o';
} else {
var icon = 'file';
}
var thenotice = '<div class="success-'+target+'-'+type+'-8768"><div class="uk-alert uk-alert-success" data-uk-alert><p class="uk-text-center"><span class="uk-text-bold uk-text-large"><i class="uk-icon-'+icon+'"></i> Your '+target+' '+type+' '+isAre+' set </span> </p></div>';
var thefile = getFile(filename, fileFormat, target, type);
jQuery("."+target+"_"+type+"_uploader").append(thenotice+thefile);
// all is done
return true;
}
function removeFileCheck(clearServer, target, type, uiVer){
if (3 == uiVer) {
UIkit.modal.confirm('Are you sure you want to delete this '+target+'?').then(function(){ removeFile(clearServer, target, 1, type); });
} else {
UIkit2.modal.confirm('Are you sure you want to delete this '+target+'?', function(){ removeFile(clearServer, target, 1, type); });
}
}
function removeFile(clearServer, target, flush, type){
if ((clearServer.length > 20 && (type === 'image' || type === 'document')) || (clearServer.length > 1 && (type === 'images' || type === 'documents' || type === 'media'))){
// remove file from server
removeFile_server(clearServer, target, flush, type);
}
jQuery(".success-"+target+"-"+type+"-8768").remove();
// remove locally
if (clearServer.length > 20 && (type === 'image' || type === 'document')) {
// remove the file
jQuery("#jform_"+target+"_"+type).val('');
} else if (clearServer.length > 20 && (type === 'images' || type === 'documents' || type === 'media')) {
// get the old values
var filenames = jQuery("#jform_"+target+"_"+type).val();
if (isJsonString(filenames)) {
filenames = jQuery.parseJSON(filenames);
// remove the current file from those values
filenames = jQuery.grep(filenames, function(value) {
return value != clearServer;
});
if (typeof filenames == 'object' && !jQuery.isEmptyObject(filenames)) {
// set the new values
var filename = JSON.stringify(filenames);
jQuery("#jform_"+target+"_"+type).val(filename);
setFile(filename, 0, target, type);
} else {
jQuery("#jform_"+target+"_"+type).val('');
}
} else {
jQuery("#jform_"+target+"_"+type).val('');
}
}
}
function removeFile_server(currentFileName, target, flush, type){
var getUrl = JRouter("index.php?option=com_membersmanager&task=ajax.removeFile&format=json&vdm="+vastDevMod);
if(token.length > 0 && target.length > 0 && type.length > 0){
var request = 'token='+token+'&filename='+currentFileName+'&target='+target+'&flush='+flush+'&type='+type;
}
return jQuery.ajax({
type: 'GET',
url: getUrl,
dataType: 'jsonp',
data: request,
jsonp: 'callback'
});
}
function isJsonString(str) {
if (typeof str != 'string') {
str = JSON.stringify(str);
}
try {
var json = jQuery.parseJSON(str);
} catch(err) {
return false;
}
if (typeof json == 'object' && isEmpty(json)) {
return false;
} else if(typeof json == 'object') {
return true;
}
return false;
}
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return true;
}
function checkUnique_server(value, field){
var getUrl = JRouter("index.php?option=com_membersmanager&task=ajax.checkUnique&format=json&vdm="+vastDevMod);
if(token.length > 0 && value.length > 0 && field.length > 0){
var request = 'token='+token+'&value='+value+'&field='+field;
}
return jQuery.ajax({
type: 'GET',
url: getUrl,
dataType: 'jsonp',
data: request,
jsonp: 'callback'
});
}
function checkUnique(value, field, show){
// check that we have a value
if (value.length > 1) {
checkUnique_server(value, field).done(function(result) {
if(result.value && result.message){
// show notice that functioName is okay
if (show) {
UIkit2.notify({message: result.message, timeout: 5000, status: result.status, pos: 'top-right'});
}
jQuery('#jform_'+field).val(result.value);
} else if(result.message){
// show notice that functionName is not okay
if (show) {
UIkit2.notify({message: result.message, timeout: 5000, status: result.status, pos: 'top-right'});
}
jQuery('#jform_'+field).val('');
} else {
// set an error that message was not send
if (show) {
UIkit2.notify({message: Joomla.JText._('COM_MEMBERSMANAGER_VALUE_ALREADY_TAKEN_PLEASE_TRY_AGAIN'), timeout: 5000, status: 'danger', pos: 'top-right'});
}
jQuery('#jform_'+field).val('');
}
});
}
}
// set regions that are on the page
regions = {};
var region = 0;
jQuery(document).ready(function($)
{
jQuery("#jform_region option").each(function()
{
var key = jQuery(this).val();
var text = jQuery(this).text();
regions[key] = text;
});
region = jQuery('#jform_region').val();
getRegion();
});
function getRegion_server(country){
var getUrl = "index.php?option=com_membersmanager&task=ajax.getRegion&format=json";
if(token.length > 0 && country > 0){
var request = 'token='+token+'&country='+country;
}
return jQuery.ajax({
type: 'GET',
url: getUrl,
dataType: 'jsonp',
data: request,
jsonp: 'callback'
});
}
function getRegion(){
jQuery("#loading").show();
// clear the selection
jQuery('#jform_region').find('option').remove().end();
jQuery('#jform_region').trigger('liszt:updated');
// get country value if set
var country = jQuery('#jform_country').val();
getRegion_server(country).done(function(result) {
setRegion(result);
jQuery("#loading").hide();
if (typeof regionButton !== 'undefined') {
// ensure button is correct
var region = jQuery('#jform_region').val();
regionButton(region);
}
});
}
function setRegion(array){
if (array) {
jQuery('#jform_region').append('<option value="">'+select_a_region+'</option>');
jQuery.each( array, function( i, id ) {
if (id in regions) {
jQuery('#jform_region').append('<option value="'+id+'">'+regions[id]+'</option>');
}
if (id == region) {
jQuery('#jform_region').val(id);
}
});
} else {
jQuery('#jform_region').append('<option value="">'+create_a_region+'</option>');
}
jQuery('#jform_region').trigger('liszt:updated');
}