freenetis-github/application/views/users/contacts_import.php @ 18ac9009
8baed187 | Michal Kliment | <script type="text/javascript"><!--
|
|
/** @var boolean */
|
|||
var can_add_user_contact = <?php echo $can_add_user_contact ? 'true' : 'false' ?>;
|
|||
/** @var string */
|
|||
var del = '<?php echo __('Delete') ?>';
|
|||
/** @var array */
|
|||
var users_names = [
|
|||
<?php foreach ($users_names as $user_name):
|
|||
echo '["' . $user_name->id . '", "' . $user_name->username . ' (' . $user_name->id . ')"],';
|
|||
endforeach; ?>
|
|||
];
|
|||
/** @var string */
|
|||
var users_names_options = '';
|
|||
/** @var string */
|
|||
var default_phone_prefix = '<?php echo $default_phone_prefix ?>';
|
|||
// options of selectboxes
|
|||
for (var i = 0; i < users_names.length; i++)
|
|||
{
|
|||
users_names_options += '<option value="' + users_names[i][0] + '">' + users_names[i][1] + '</option>';
|
|||
}
|
|||
$(document).ready(function ()
|
|||
{
|
|||
// submit form
|
|||
$('#import_form').submit(function()
|
|||
{
|
|||
// valid data?
|
|||
if ($(this).validate().form())
|
|||
{
|
|||
// submit the form
|
|||
$.ajax({
|
|||
success: im_ajax_response,
|
|||
error: im_ajax_response_error,
|
|||
async: false,
|
|||
type: 'post',
|
|||
dataType: 'json',
|
|||
data: $(this).serialize(),
|
|||
url: '<?php echo url_lang::base() ?>private_phone_contacts/import_save_ajax/<?php echo $user->id ?>/'
|
|||
});
|
|||
}
|
|||
// return false to prevent normal browser submit and page navigation
|
|||
return false;
|
|||
});
|
|||
// parse button click
|
|||
$('#import_button').click(function ()
|
|||
{
|
|||
var input = $('#import_field');
|
|||
var error = $('#import_error');
|
|||
var json;
|
|||
if (input.val().length <= 0)
|
|||
{
|
|||
error.html('<?php echo __('Fill in field'); ?>');
|
|||
input.focus();
|
|||
return false;
|
|||
}
|
|||
error.html('');
|
|||
// parse JSON in input field
|
|||
try
|
|||
{
|
|||
json = $.parseJSON(input.val());
|
|||
}
|
|||
catch (e)
|
|||
{
|
|||
error.html('<?php echo __('Wrong date format'); ?>');
|
|||
input.focus();
|
|||
return false;
|
|||
}
|
|||
// lock form
|
|||
$(this).hide();
|
|||
input.attr('readonly', 'readonly');
|
|||
// data
|
|||
var contact;
|
|||
var phone;
|
|||
var counter = 0;
|
|||
var contact_counter = 0;
|
|||
// work with data
|
|||
if (json.contacts && isArray(json.contacts))
|
|||
{
|
|||
// foreach contact
|
|||
for (var i = 0; i < json.contacts.length; i++)
|
|||
{
|
|||
contact = json.contacts[i];
|
|||
// contacts
|
|||
if (contact.phone && isArray(contact.phone))
|
|||
{
|
|||
contact_counter++;
|
|||
// for each phone
|
|||
for (var u = 0; u < contact.phone.length; u++)
|
|||
{
|
|||
phone = contact.phone[u].v;
|
|||
counter++;
|
|||
// add default prefix, if there is no prefix
|
|||
if (phone[0] != '+')
|
|||
{
|
|||
phone = '+' + default_phone_prefix + phone;
|
|||
}
|
|||
// create form
|
|||
add_to_form(contact, phone, counter, contact_counter);
|
|||
}
|
|||
}
|
|||
}
|
|||
// show form
|
|||
$('#import_output').show();
|
|||
}
|
|||
else
|
|||
{
|
|||
error.html('<?php echo __('Wrong date format'); ?>');
|
|||
input.focus();
|
|||
}
|
|||
return false;
|
|||
})
|
|||
});
|
|||
/**
|
|||
* Post-submit success callback
|
|||
*/
|
|||
function im_ajax_response(responseJSON)
|
|||
{
|
|||
// is error?
|
|||
if (responseJSON.success == undefined)
|
|||
{
|
|||
alert(responseJSON.error);
|
|||
}
|
|||
else
|
|||
{
|
|||
// change form to read
|
|||
$('#submit_button').hide();
|
|||
$('#th_delete').text('<?php echo __('State') ?>');
|
|||
$('#import_form_table').find(':input').attr('disabled', 'disabled');
|
|||
// display result
|
|||
for (var i = 0; i < responseJSON.success.length; i++)
|
|||
{
|
|||
var id = responseJSON.success[i].id;
|
|||
var status = responseJSON.success[i].status;
|
|||
// zero is empty string
|
|||
if (id == 0)
|
|||
{
|
|||
id = '0';
|
|||
}
|
|||
if (status % 2 == 0)
|
|||
{ // saved
|
|||
$('#td_delete_'+id).html('<?php echo html::image(array(
|
|||
'src' => 'media/images/states/good_16x16.png',
|
|||
'title' => __('Added')
|
|||
)) ?>');
|
|||
}
|
|||
else if (status == 5)
|
|||
{ // already in
|
|||
$('#td_delete_'+id).html('<?php echo html::image(array(
|
|||
'src' => 'media/images/states/warning_16x16.png',
|
|||
'title' => __('Contact is owned by another user')
|
|||
)) ?>');
|
|||
}
|
|||
else
|
|||
{ // already in
|
|||
$('#td_delete_'+id).html('<?php echo html::image(array(
|
|||
'src' => 'media/images/states/readonly_16x16.png',
|
|||
'title' => __('Contact is already in database')
|
|||
)) ?>');
|
|||
}
|
|||
}
|
|||
// saved
|
|||
$('#import_message').text('<?php echo __('Import has been successfully finished') ?>');
|
|||
$('#import_message').show();
|
|||
}
|
|||
}
|
|||
/**
|
|||
* Post-submit error callback
|
|||
*/
|
|||
function im_ajax_response_error(jqXHR, textStatus, errorThrown)
|
|||
{
|
|||
alert('<?php echo __('Cannot save form') ?>:\n' +
|
|||
textStatus + '\n' + errorThrown);
|
|||
}
|
|||
/**
|
|||
* Create form with given data
|
|||
*/
|
|||
function add_to_form(contact, phone, count, count_contact)
|
|||
{
|
|||
var table = $('#import_form_table');
|
|||
//
|
|||
table.append('<tr' + ((count_contact%2) ? ' class="even"' : '') + '>\
|
|||
<td><input name="im_name['+count+']" type="text" value="' +
|
|||
contact.firstname + ' ' + (contact.middlename ? contact.middlename + ' ' : '') +
|
|||
contact.lastname + '" class="required" /></td>\
|
|||
<input name="im_namef['+count+']" type="hidden" value="' +
|
|||
contact.firstname + '" />\
|
|||
<input name="im_namel['+count+']" type="hidden" value="' +
|
|||
contact.lastname + '" />\
|
|||
<td>' + phone +
|
|||
'<input name="im_phone['+count+']" type="hidden" value="' +
|
|||
phone.substr(1, phone.length) + '" /></td>\
|
|||
<?php if ($can_add_user_contact): ?>\
|
|||
<td>\
|
|||
<input name="im_private['+count+']" type="checkbox" value="1" \
|
|||
class="checkbox" checked="checked" onchange="im_change(this)" />\
|
|||
<select name="im_contact['+count+']" disabled="disabled" style="width: 200px; display: none;"></select>\
|
|||
</td>\
|
|||
<?php else: ?>\
|
|||
<input name="im_private['+count+']" type="hidden" value="1" />\
|
|||
<?php endif; ?>\
|
|||
<td id="td_delete_'+count+'"><a href="#" onclick="return im_delete_row(this);">' + del + '</a></td>\
|
|||
</tr>');
|
|||
}
|
|||
/**
|
|||
* Check if obj is array
|
|||
* @param unknown obj
|
|||
* @return boolean
|
|||
*/
|
|||
function isArray(obj)
|
|||
{
|
|||
return obj.constructor == Array;
|
|||
}
|
|||
/**
|
|||
* Deletes row where a belongs
|
|||
*/
|
|||
function im_delete_row(a)
|
|||
{
|
|||
$(a).parent().parent().remove();
|
|||
return false;
|
|||
}
|
|||
/**
|
|||
* Onchange function for checkbox b
|
|||
*/
|
|||
function im_change(b)
|
|||
{
|
|||
var checkbox = $(b);
|
|||
var selectbox = checkbox.parent().find('select');
|
|||
var username = checkbox.parent().parent().find('input[type="text"]');
|
|||
if (selectbox)
|
|||
{
|
|||
if (checkbox.attr('checked'))
|
|||
{
|
|||
selectbox.attr('disabled', 'disabled');
|
|||
selectbox.hide();
|
|||
username.removeAttr('readonly');
|
|||
}
|
|||
else
|
|||
{
|
|||
// search for username in users array
|
|||
if (username)
|
|||
{
|
|||
username.attr('readonly', 'readonly');
|
|||
// foreach username
|
|||
for (var i = 0; i < users_names.length; i++)
|
|||
{
|
|||
// is selectbox empty?
|
|||
if (selectbox.children().length <= 0)
|
|||
{ // add options
|
|||
selectbox.html(users_names_options);
|
|||
}
|
|||
// starts with?
|
|||
if (users_names[i][1].match('^' + username.val()))
|
|||
{
|
|||
selectbox.find('option[value="' + users_names[i][0] + '"]')
|
|||
.attr('selected', 'selected');
|
|||
break;
|
|||
}
|
|||
}
|
|||
}
|
|||
// enable
|
|||
selectbox.removeAttr('disabled');
|
|||
selectbox.show();
|
|||
}
|
|||
}
|
|||
}
|
|||
c1bdc1c4 | Michal Kliment | //--></script>
|
|
8baed187 | Michal Kliment | ||
<h2><?php echo __('Import private contact') ?></h2><br />
|
|||
<h3><?php echo __('Import contact from server Funanbol') ?></h3>
|
|||
<p><?php echo __('Insert data from webpage')?>: <br /><b>http://my.funambol.com/capi/contact?command=getdata&login=<i>LOGIN</i>&password=<i>PASSWORD</i></b></p>
|
|||
<br/>
|
|||
<table cellspacing="0" class="form" id="form_table">
|
|||
<tr>
|
|||
<td>
|
|||
<textarea cols="" rows="" id="import_field"></textarea>
|
|||
</td>
|
|||
</tr>
|
|||
<tr>
|
|||
<td class="error" id="import_error"></td>
|
|||
</tr>
|
|||
<tr>
|
|||
<td>
|
|||
<button type="button" id="import_button" class="submit"><?php echo __('Parse') ?></button>
|
|||
</td>
|
|||
</tr>
|
|||
</table>
|
|||
<br /><br />
|
|||
<div style="display: none;" id="import_output">
|
|||
<h3><?php echo __('Imported contacts') ?></h3><br />
|
|||
<div id="import_message" class="message" style="display: none;"></div>
|
|||
<form action="" id="import_form" method="post">
|
|||
<table id="import_form_table" class="main grid_table">
|
|||
<tr>
|
|||
<th><?php echo __('Name') ?></th>
|
|||
<th><?php echo __('Telephone number') ?></th>
|
|||
<?php if ($can_add_user_contact): ?>
|
|||
<th><?php echo __('Private contact') ?>?</th>
|
|||
<?php endif; ?>
|
|||
<th id="th_delete"><?php echo __('Delete') ?></th>
|
|||
</tr>
|
|||
</table>
|
|||
<br />
|
|||
<button type="submit" class="submit" name="submit" id="submit_button"><?php echo __('Submit') ?></button>
|
|||
</form>
|
|||
</div>
|