mirror of
https://github.com/VTECRM/vtenext.git
synced 2026-02-26 16:18:47 +00:00
950 lines
22 KiB
JavaScript
950 lines
22 KiB
JavaScript
/*************************************
|
|
* SPDX-FileCopyrightText: 2009-2020 Vtenext S.r.l. <info@vtenext.com>
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
************************************/
|
|
|
|
// crmv@168573
|
|
|
|
window.VTE = window.VTE || {};
|
|
|
|
window.VTE.MyNotesWidget = window.VTE.MyNotesWidget || {
|
|
|
|
busy: false,
|
|
|
|
noteList: [],
|
|
|
|
parentRecord: 0,
|
|
|
|
maxSubjectLength: 50, // Default
|
|
|
|
currentView: null,
|
|
|
|
permissions: {},
|
|
|
|
createViewOpen: false,
|
|
|
|
labels: {},
|
|
|
|
init: function() {
|
|
var me = this;
|
|
|
|
me.currentView = 'carousel';
|
|
|
|
me.initEvents();
|
|
me.initComponents();
|
|
|
|
me.subjectFieldEdited = false;
|
|
},
|
|
|
|
initComponents: function() {
|
|
var me = this;
|
|
|
|
me.switchCreateButton('create');
|
|
me.switchView(me.currentView);
|
|
},
|
|
|
|
initEvents: function() {
|
|
var me = this;
|
|
|
|
jQuery('.create-note').on('click', me.handleCreateNote);
|
|
jQuery('.save-note').on('click', me.handleSaveNote);
|
|
jQuery('.switch-carousel-button').on('click', me.handleSwitchCarouselButton);
|
|
jQuery('.switch-list-button').on('click', me.handleSwitchListButton);
|
|
jQuery('.close-create-view').on('click', me.handleCloseCreateView);
|
|
|
|
jQuery('.notes-subject-field').on('keyup', me.handleSubjectField);
|
|
jQuery('.notes-subject-field').on('change', me.handleSubjectField);
|
|
|
|
jQuery('.notes-description-field').on('keyup', me.handleDescriptionField);
|
|
jQuery('.notes-description-field').on('change', me.handleDescriptionField);
|
|
},
|
|
|
|
permRead: function() {
|
|
return this.isPermitted('read');
|
|
},
|
|
|
|
permWrite: function() {
|
|
return this.isPermitted('write');
|
|
},
|
|
|
|
permDelete: function() {
|
|
return this.isPermitted('delete');
|
|
},
|
|
|
|
isPermitted: function(mode) {
|
|
return this.permissions && this.permissions[mode];
|
|
},
|
|
|
|
handleCreateNote: function(e) {
|
|
var me = window.VTE.MyNotesWidget,
|
|
element = this,
|
|
$element = jQuery(element);
|
|
|
|
me.openCreateView();
|
|
},
|
|
|
|
handleSaveNote: function(e) {
|
|
var me = window.VTE.MyNotesWidget,
|
|
element = this,
|
|
$element = jQuery(element);
|
|
|
|
me.saveNote();
|
|
},
|
|
|
|
handleSwitchCarouselButton: function(e) {
|
|
var me = window.VTE.MyNotesWidget,
|
|
element = this,
|
|
$element = jQuery(element);
|
|
|
|
me.switchView('carousel');
|
|
},
|
|
|
|
handleSwitchListButton: function(e) {
|
|
var me = window.VTE.MyNotesWidget,
|
|
element = this,
|
|
$element = jQuery(element);
|
|
|
|
me.switchView('list');
|
|
},
|
|
|
|
handleCloseCreateView: function(e) {
|
|
var me = window.VTE.MyNotesWidget,
|
|
element = this,
|
|
$element = jQuery(element);
|
|
|
|
me.closeCreateView();
|
|
},
|
|
|
|
handleDeleteNote: function(e) {
|
|
var me = window.VTE.MyNotesWidget,
|
|
element = this,
|
|
$element = jQuery(element);
|
|
|
|
var noteElement = $element.closest('.note-element'),
|
|
noteId = noteElement.data('noteId'),
|
|
parentId = me.parentRecord;
|
|
|
|
me.deleteNote(noteId, parentId);
|
|
},
|
|
|
|
handleLinkNote: function(e) {
|
|
var me = window.VTE.MyNotesWidget,
|
|
element = this,
|
|
$element = jQuery(element);
|
|
|
|
var noteElement = $element.closest('.note-element'),
|
|
noteId = noteElement.data('noteId'),
|
|
parentId = me.parentRecord;
|
|
|
|
me.linkNote(noteId, parentId);
|
|
},
|
|
|
|
handleSubjectField: function(e) {
|
|
var me = window.VTE.MyNotesWidget,
|
|
element = this,
|
|
$element = jQuery(element);
|
|
|
|
if (e.type === 'keyup') {
|
|
me.editSubjectField();
|
|
} else if (e.type === 'change') {
|
|
me.editSubjectField();
|
|
}
|
|
},
|
|
|
|
handleDescriptionField: function(e) {
|
|
var me = window.VTE.MyNotesWidget,
|
|
element = this,
|
|
$element = jQuery(element);
|
|
|
|
if (e.type === 'keyup') {
|
|
me.updateSubjectField();
|
|
} else if (e.type === 'change') {
|
|
me.updateSubjectField();
|
|
}
|
|
},
|
|
|
|
handleNoteEdit: function(e) {
|
|
var me = window.VTE.MyNotesWidget,
|
|
element = this,
|
|
$element = jQuery(element);
|
|
|
|
var noteElement = $element.closest('.note-element'),
|
|
noteId = noteElement.data('noteId'),
|
|
parentId = me.parentRecord;
|
|
|
|
me.editNote(noteId, parentId);
|
|
},
|
|
|
|
populateNotes: function() {
|
|
var me = this,
|
|
notes = me.noteList || {},
|
|
carouselContainer = jQuery('.notes-slider .carousel-inner'),
|
|
indicators = jQuery('.notes-slider .carousel-indicators'),
|
|
listContainer = jQuery('.notes-list'),
|
|
viewContainer = null;
|
|
|
|
var populated = false;
|
|
|
|
if (me.reload) {
|
|
carouselContainer.empty();
|
|
indicators.empty();
|
|
listContainer.empty();
|
|
me.reload = false;
|
|
}
|
|
|
|
if (notes.length > 0) {
|
|
if (me.currentView === 'carousel') {
|
|
viewContainer = carouselContainer;
|
|
} else if (me.currentView === 'list') {
|
|
viewContainer = listContainer;
|
|
}
|
|
|
|
var children = viewContainer.children();
|
|
|
|
if (children.length === 0) {
|
|
viewContainer.empty();
|
|
|
|
if (viewContainer.length > 0) {
|
|
jQuery.each(notes, function(idx, note) {
|
|
var element = me.createNoteElement(note, idx);
|
|
element.appendTo(viewContainer);
|
|
|
|
if (me.currentView === 'carousel') {
|
|
var indicator = me.createCarouselIndicator(idx);
|
|
indicator.appendTo(indicators);
|
|
}
|
|
});
|
|
|
|
jQuery('i[data-toggle="tooltip"]').tooltip({ animation: false });
|
|
}
|
|
}
|
|
|
|
populated = true;
|
|
}
|
|
|
|
return populated;
|
|
},
|
|
|
|
createNoteElement: function(note, idx) {
|
|
var me = this,
|
|
tpl = jQuery('#note-element-tpl');
|
|
|
|
var element = tpl.clone();
|
|
|
|
element.data('noteId', note['record_id']);
|
|
element.attr('note-id', note['record_id']);
|
|
element.attr('id', 'note-' + note['record_id']);
|
|
element.find('.note-element-title').text(note['subject']);
|
|
element.find('.note-element-description').html(note['html_description']);
|
|
element.find('.note-element-picture img').attr('src', note['assigned_user_avatar']);
|
|
element.find('.note-element-picture img').attr('alt', note['assigned_user_formatted']);
|
|
element.find('.note-element-picture img').attr('title', note['assigned_user_formatted']);
|
|
element.find('.note-element-user').text(note['assigned_user_formatted']);
|
|
element.find('.note-element-timestamp').text(note['created_timestamp_ago']);
|
|
element.find('.note-element-timestamp').attr('title', note['created_timestamp']);
|
|
|
|
if (note['editable']) {
|
|
element.find('.note-element-title').on('dblclick', me.handleNoteEdit);
|
|
element.find('.note-element-description').on('dblclick', me.handleNoteEdit);
|
|
|
|
element.find('.edit-note').removeClass('hidden');
|
|
element.find('.edit-note').on('click', me.handleNoteEdit);
|
|
|
|
element.find('.link-note').removeClass('hidden');
|
|
}
|
|
|
|
if (note['deletable']) {
|
|
element.find('.delete-note').removeClass('hidden');
|
|
element.find('.delete-note').on('click', me.handleDeleteNote);
|
|
}
|
|
|
|
element.find('.link-note').on('click', me.handleLinkNote);
|
|
|
|
element.show();
|
|
|
|
if (me.currentView === 'carousel') {
|
|
element = element.wrap('<div class="item"></div>').parent();
|
|
}
|
|
|
|
return element;
|
|
},
|
|
|
|
createCarouselIndicator: function(idx) {
|
|
var me = this,
|
|
carousel = jQuery('.notes-slider');
|
|
|
|
var indicator = jQuery('<li></li>');
|
|
|
|
indicator.on('click', function(e) {
|
|
carousel.carousel(idx);
|
|
});
|
|
|
|
return indicator;
|
|
},
|
|
|
|
showBusy: function() {
|
|
var me = this;
|
|
me.busy = true;
|
|
jQuery('.notes-loader').removeClass('hidden');
|
|
},
|
|
|
|
hideBusy: function() {
|
|
var me = this;
|
|
me.busy = false;
|
|
jQuery('.notes-loader').addClass('hidden');
|
|
},
|
|
|
|
switchView: function(view) {
|
|
var me = this;
|
|
|
|
if (me.createViewOpen) return;
|
|
|
|
me.currentView = view;
|
|
|
|
if (view === 'list') {
|
|
me.switchListView();
|
|
} else if (view === 'carousel') {
|
|
me.switchCarouselView();
|
|
}
|
|
|
|
me.switchActiveButton();
|
|
me.updateNotesTitle();
|
|
},
|
|
|
|
switchListView: function() {
|
|
var me = this,
|
|
emptyList = jQuery('.empty-notes'),
|
|
list = jQuery('.notes-list'),
|
|
carousel = jQuery('.notes-slider');
|
|
|
|
var populated = me.populateNotes();
|
|
|
|
if (populated) {
|
|
emptyList.addClass('hidden');
|
|
carousel.addClass('hidden');
|
|
list.removeClass('hidden');
|
|
} else {
|
|
emptyList.removeClass('hidden');
|
|
carousel.addClass('hidden');
|
|
list.addClass('hidden');
|
|
}
|
|
},
|
|
|
|
switchCarouselView: function() {
|
|
var me = this,
|
|
emptyList = jQuery('.empty-notes'),
|
|
list = jQuery('.notes-list'),
|
|
carousel = jQuery('.notes-slider'),
|
|
indicators = jQuery('.notes-slider .carousel-indicators');
|
|
|
|
var populated = me.populateNotes();
|
|
|
|
if (populated) {
|
|
emptyList.addClass('hidden');
|
|
carousel.removeClass('hidden');
|
|
list.addClass('hidden');
|
|
|
|
if (!me.carouselInitilized) {
|
|
jQuery('.carousel').carousel({
|
|
interval: false,
|
|
});
|
|
|
|
jQuery('.carousel-control.left').on('click', function(e) {
|
|
e.preventDefault();
|
|
jQuery('.carousel').carousel('prev');
|
|
});
|
|
|
|
jQuery('.carousel-control.right').on('click', function(e) {
|
|
e.preventDefault();
|
|
jQuery('.carousel').carousel('next');
|
|
});
|
|
|
|
me.carouselInitilized = true;
|
|
}
|
|
|
|
var activeItem = carousel.find('.item.active');
|
|
if (activeItem.length === 0) {
|
|
carousel.find('.item').first().addClass('active');
|
|
indicators.find('li').first().addClass('active');
|
|
jQuery('.carousel').carousel(0);
|
|
}
|
|
} else {
|
|
emptyList.removeClass('hidden');
|
|
carousel.addClass('hidden');
|
|
list.addClass('hidden');
|
|
}
|
|
},
|
|
|
|
switchActiveButton: function() {
|
|
var me = this,
|
|
view = me.currentView,
|
|
button = me.getSwitchButton(view);
|
|
|
|
jQuery('.switch-view').removeClass('active');
|
|
button.addClass('active');
|
|
},
|
|
|
|
updateNotesTitle: function() {
|
|
var me = this,
|
|
view = me.currentView,
|
|
$title = jQuery('.notes-header-title .title');
|
|
|
|
var title = null;
|
|
|
|
if (view === 'list') {
|
|
title = me.labels.list;
|
|
} else if (view === 'carousel') {
|
|
title = me.labels.slider;
|
|
}
|
|
|
|
if (title !== null) {
|
|
$title.html(me.labels.notes + ' - ' + title);
|
|
}
|
|
},
|
|
|
|
getSwitchButton: function(view) {
|
|
var me = this;
|
|
|
|
var button = null;
|
|
|
|
if (view === 'list') {
|
|
button = jQuery('.switch-list-button');
|
|
} else if (view === 'carousel') {
|
|
button = jQuery('.switch-carousel-button');
|
|
}
|
|
|
|
return button;
|
|
},
|
|
|
|
openCreateView: function() {
|
|
var me = this;
|
|
|
|
if (me.createViewOpen) return;
|
|
|
|
me.createViewOpen = true;
|
|
|
|
jQuery('.notes-create-view').removeClass('hidden');
|
|
|
|
jQuery('.notes-create-view').animate({
|
|
'top': '0px',
|
|
}, 'fast', function() {
|
|
jQuery('.notes-description-field').focus();
|
|
});
|
|
|
|
me.switchCreateButton('save');
|
|
},
|
|
|
|
closeCreateView: function() {
|
|
var me = this;
|
|
|
|
if (!me.createViewOpen) return;
|
|
|
|
me.createViewOpen = false;
|
|
|
|
jQuery('.notes-create-view').animate({
|
|
'top': '100%',
|
|
}, 'fast', function() {
|
|
jQuery('.notes-create-view').addClass('hidden');
|
|
});
|
|
|
|
me.switchCreateButton('create');
|
|
|
|
if (me.editMode) {
|
|
me.resetFields();
|
|
me.editMode = false;
|
|
}
|
|
},
|
|
|
|
switchCreateButton: function(mode) {
|
|
var me = this,
|
|
permWrite = me.permWrite(),
|
|
createButton = jQuery('.create-note'),
|
|
saveButton = jQuery('.save-note');
|
|
|
|
if (permWrite) {
|
|
if (mode === 'create') {
|
|
createButton.removeClass('hidden');
|
|
saveButton.addClass('hidden');
|
|
} else if (mode === 'save') {
|
|
createButton.addClass('hidden');
|
|
saveButton.removeClass('hidden');
|
|
}
|
|
} else {
|
|
createButton.addClass('hidden');
|
|
saveButton.addClass('hidden');
|
|
}
|
|
},
|
|
|
|
saveNote: function() {
|
|
var me = this,
|
|
form = jQuery('#notes-create-form'),
|
|
descriptionElem = jQuery('.notes-description-field'),
|
|
description = descriptionElem.val();
|
|
|
|
if (!description.length) {
|
|
var fieldLabel = descriptionElem.attr('placeholder');
|
|
vtealert(sprintf(alert_arr.CANNOT_BE_EMPTY, fieldLabel), function() {
|
|
descriptionElem.focus();
|
|
});
|
|
return false;
|
|
}
|
|
|
|
if (me.busy) return;
|
|
|
|
me.showBusy();
|
|
|
|
if (!SessionValidator.check()) {
|
|
SessionValidator.showLogin();
|
|
return false;
|
|
}
|
|
|
|
var sdkValidate = SDKValidate(form.get(0));
|
|
if (sdkValidate) {
|
|
var sdkValidateResponse = eval('('+sdkValidate.responseText+')');
|
|
if (!sdkValidateResponse['status']) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
var data = form.serializeArray();
|
|
|
|
jQuery.ajax({
|
|
url: 'index.php',
|
|
method: 'POST',
|
|
data: data,
|
|
dataType: 'json',
|
|
success: function(res) {
|
|
me.hideBusy();
|
|
if (res && res.success !== 'true') {
|
|
alert(alert_arr.ERROR);
|
|
} else {
|
|
me.reloadWidget();
|
|
}
|
|
},
|
|
error: function() {
|
|
me.hideBusy();
|
|
alert(alert_arr.ERROR);
|
|
},
|
|
});
|
|
},
|
|
|
|
reloadWidget: function() {
|
|
var me = this;
|
|
|
|
me.syncNotes(function(res) {
|
|
if (res && res.list) {
|
|
me.closeCreateView();
|
|
me.resetFields();
|
|
|
|
me.noteList = res.list;
|
|
me.reload = true;
|
|
me.switchView(me.currentView);
|
|
}
|
|
});
|
|
},
|
|
|
|
syncNotes: function(callback) {
|
|
var me = this;
|
|
|
|
if (me.busy) return;
|
|
|
|
me.showBusy();
|
|
|
|
jQuery.ajax({
|
|
url: 'index.php?module=MyNotes&action=MyNotesAjax&file=DetailViewAjax&ajxaction=LOADLIST&parent='+me.parentRecord,
|
|
method: 'POST',
|
|
dataType: 'json',
|
|
success: function(res) {
|
|
me.hideBusy();
|
|
if (typeof callback === 'function') {
|
|
callback(res);
|
|
}
|
|
},
|
|
error: function() {
|
|
me.hideBusy();
|
|
alert(alert_arr.ERROR);
|
|
},
|
|
});
|
|
},
|
|
|
|
deleteNote: function(noteId, parentId) {
|
|
var me = this;
|
|
|
|
if (me.busy) return;
|
|
|
|
vteconfirm(me.labels.delete_confirm_message, function(yes) {
|
|
if (yes) {
|
|
me.showBusy();
|
|
|
|
jQuery.ajax({
|
|
url: 'index.php?module=MyNotes&action=MyNotesAjax&action=Delete&record='+noteId+'&parent='+parentId+'&mode=DetailViewMyNotesWidget',
|
|
method: 'POST',
|
|
dataType: 'json',
|
|
success: function(res) {
|
|
me.hideBusy();
|
|
if (res && res.success === 'true') {
|
|
me.reloadWidget();
|
|
}
|
|
},
|
|
error: function() {
|
|
me.hideBusy();
|
|
alert(alert_arr.ERROR);
|
|
},
|
|
});
|
|
}
|
|
});
|
|
|
|
return false;
|
|
},
|
|
|
|
linkNote: function(noteId, parentId) {
|
|
var me = this;
|
|
|
|
LPOP.openPopup('MyNotes', noteId, 'onlycreate', {
|
|
'callback_create': 'LPOP.convert'
|
|
});
|
|
},
|
|
|
|
editNote: function(noteId, parentId) {
|
|
var me = this,
|
|
$subject = jQuery('.notes-subject-field'),
|
|
$description = jQuery('.notes-description-field');
|
|
|
|
var note = me.findNoteById(noteId);
|
|
if (note === null) return false;
|
|
|
|
me.editMode = true;
|
|
|
|
me.openCreateView();
|
|
|
|
$subject.val(note['subject']);
|
|
me.subjectFieldEdited = true;
|
|
|
|
$description.val(note['description']);
|
|
|
|
jQuery('#notes-create-form').find('input[name="record"]').val(noteId);
|
|
jQuery('#notes-create-form').find('input[name="mode"]').val('edit');
|
|
},
|
|
|
|
editSubjectField: function() {
|
|
var me = this,
|
|
$subject = jQuery('.notes-subject-field'),
|
|
subject = $subject.val();
|
|
|
|
me.subjectFieldEdited = true;
|
|
|
|
if (subject.length === 0) {
|
|
me.subjectFieldEdited = false;
|
|
}
|
|
|
|
if (subject.length > me.maxSubjectLength) {
|
|
$subject.val(subject.substring(0, me.maxSubjectLength));
|
|
}
|
|
},
|
|
|
|
updateSubjectField: function() {
|
|
var me = this,
|
|
$subject = jQuery('.notes-subject-field'),
|
|
$description = jQuery('.notes-description-field'),
|
|
description = $description.val();
|
|
|
|
if (!me.subjectFieldEdited) {
|
|
$subject.val(description.substring(0, me.maxSubjectLength));
|
|
}
|
|
},
|
|
|
|
resetFields: function() {
|
|
var me = this,
|
|
$subject = jQuery('.notes-subject-field'),
|
|
$description = jQuery('.notes-description-field');
|
|
|
|
$subject.val('');
|
|
me.subjectFieldEdited = false;
|
|
|
|
$description.val('');
|
|
|
|
jQuery('#notes-create-form').find('input[name="record"]').val('');
|
|
jQuery('#notes-create-form').find('input[name="mode"]').val('');
|
|
},
|
|
|
|
findNoteById: function(noteId) {
|
|
var me = this,
|
|
notes = me.noteList;
|
|
|
|
var record = null;
|
|
|
|
jQuery.each(notes, function(idx, note) {
|
|
if (note['record_id'] === noteId) {
|
|
record = note;
|
|
return false;
|
|
}
|
|
});
|
|
|
|
return record;
|
|
},
|
|
|
|
};
|
|
|
|
if (typeof(MyNotesSV) == 'undefined') {
|
|
|
|
MyNotesSV = {
|
|
|
|
select: function(listid,module,crmid,entityname) {
|
|
|
|
if (window.itsonview) itsonview = false; // crmv@180166
|
|
jQuery('#ListViewContents [id^="row_"]').removeClass('lvtColDataHoverMessage');
|
|
jQuery('#row_'+crmid).addClass('lvtColDataHoverMessage');
|
|
|
|
MyNotesSV.detailView(module,crmid);
|
|
},
|
|
detailView: function(module,crmid) {
|
|
|
|
jQuery('.editviewbutton').hide();
|
|
VteJS_DialogBox.progress('DetailViewContents','light');
|
|
|
|
jQuery.ajax({
|
|
url: 'index.php?module='+module+'&action=DetailView&mode=SimpleView&record='+crmid,
|
|
success: function(data){
|
|
jQuery('#DetailViewContents').html(data);
|
|
|
|
// crmv@104853 // crmv@172994
|
|
var bodyH = parseInt(jQuery('body').height());
|
|
var buttonsListH = parseInt(jQuery('#Buttons_List').outerHeight(true));
|
|
|
|
//crmv@54072 crmv@55694
|
|
var height = bodyH-buttonsListH-220;
|
|
|
|
var description = jQuery('form[name="DetailView"] [name="description"]');
|
|
description.parent().parent().height(height);
|
|
description.parent().parent().css('overflow-y','auto');
|
|
description.addClass('dvtCellInfoM');
|
|
//crmv@54072e crmv@55694e
|
|
// crmv@104853e // crmv@172994e
|
|
|
|
VteJS_DialogBox.hideprogress('DetailViewContents');
|
|
jQuery('.detailviewbutton').show();
|
|
|
|
MyNotesSV.registerPanelBlocker(); // crmv@171115
|
|
}
|
|
});
|
|
},
|
|
create: function(module) {
|
|
|
|
jQuery('#ListViewContents [id^="row_"]').removeClass('lvtColDataHoverMessage');
|
|
|
|
jQuery('.detailviewbutton').hide();
|
|
VteJS_DialogBox.progress();
|
|
|
|
jQuery.ajax({
|
|
url: 'index.php?module='+module+'&action='+module+'Ajax&file=EditView&hide_button_list=1',
|
|
success: function(data){
|
|
jQuery('#DetailViewContents').html(data);
|
|
|
|
jQuery('form[name="EditView"]').attr('onsubmit','');
|
|
jQuery('form[name="EditView"]').submit(function() {
|
|
jQuery('#saveNoteButton').click();
|
|
return false;
|
|
});
|
|
|
|
// crmv@104853 // crmv@172994
|
|
var bodyH = parseInt(jQuery('body').height());
|
|
var buttonsListH = parseInt(jQuery('#Buttons_List').outerHeight(true));
|
|
var emptyHeight = bodyH-buttonsListH-220;
|
|
// crmv@104853e // crmv@172994e
|
|
|
|
jQuery('form[name="EditView"] [name="description"]').height(emptyHeight);
|
|
jQuery('form[name="EditView"] [name="description"]').focus();
|
|
|
|
VteJS_DialogBox.hideprogress();
|
|
jQuery('.editviewbutton').show();
|
|
|
|
MyNotesSV.registerPanelBlocker(); // crmv@171115
|
|
}
|
|
});
|
|
},
|
|
// crmv@97430
|
|
getListId: function() {
|
|
var list = jQuery('#ListViewContents').find('div[id^=SLVContainer_]');
|
|
if (list.length > 0) {
|
|
return parseInt(list.get(0).id.replace('SLVContainer_', ''));
|
|
}
|
|
return null;
|
|
},
|
|
save: function(module) {
|
|
var me = this;
|
|
|
|
//crmv@91082
|
|
if(!SessionValidator.check()) {
|
|
SessionValidator.showLogin();
|
|
return false;
|
|
}
|
|
//crmv@91082e
|
|
|
|
var form = document.forms['EditView'];
|
|
form.action.value='Save';
|
|
|
|
var valid = formValidate(form);
|
|
if (!valid) return;
|
|
|
|
VteJS_DialogBox.progress();
|
|
|
|
jQuery.ajax({
|
|
url: jQuery(form).attr('action'),
|
|
data: jQuery(form).serialize()+'&mode=SimpleView',
|
|
dataType: 'json',
|
|
type: 'POST',
|
|
success: function(data, status, xhr) {
|
|
VteJS_DialogBox.hideprogress();
|
|
if (data['success'] != 'true') {
|
|
alert(alert_arr.ERROR);
|
|
} else {
|
|
crmid = data['record'];
|
|
MyNotesSV.detailView(module,crmid);
|
|
|
|
var listid = me.getListId();
|
|
if (listid > 0) {
|
|
SLV.clear_search(listid);
|
|
SLV.search(listid);
|
|
}
|
|
}
|
|
|
|
me.registerPanelBlocker(); // crmv@171115
|
|
},
|
|
error: function() {
|
|
VteJS_DialogBox.hideprogress();
|
|
alert(alert_arr.ERROR);
|
|
}
|
|
});
|
|
},
|
|
delete: function(module,formname,action,confirmationMsg) {
|
|
var me = this;
|
|
|
|
if (confirm(confirmationMsg)) {
|
|
|
|
var form = document.forms[formname];
|
|
form.action.value=action;
|
|
|
|
VteJS_DialogBox.progress();
|
|
|
|
jQuery.ajax({
|
|
url: jQuery(form).attr('action'),
|
|
data: jQuery(form).serialize()+'&mode=SimpleView',
|
|
type: 'POST',
|
|
complete: function() {
|
|
VteJS_DialogBox.hideprogress();
|
|
},
|
|
success: function(data, status, xhr) {
|
|
jQuery('#DetailViewContents').html('');
|
|
jQuery('.editviewbutton').hide();
|
|
jQuery('.detailviewbutton').hide();
|
|
|
|
var listid = me.getListId();
|
|
if (listid > 0) {
|
|
SLV.clear_search(listid);
|
|
SLV.search(listid);
|
|
}
|
|
},
|
|
error: function() {
|
|
alert(alert_arr.ERROR);
|
|
}
|
|
});
|
|
}
|
|
return false;
|
|
},
|
|
// crmv@97430e
|
|
|
|
// crmv@171115
|
|
registerPanelBlocker: function() {
|
|
var me = this;
|
|
|
|
var selectors = [
|
|
'#description', // Description field
|
|
'#txtbox_Note', // Description field (DetailView)
|
|
];
|
|
|
|
VTE.registerPanelBlocker('MyNotes', selectors);
|
|
},
|
|
// crmv@171115e
|
|
|
|
};
|
|
}
|
|
|
|
// crmv@192033
|
|
if (typeof(MyNotesDVW) == 'undefined') {
|
|
|
|
MyNotesDVW = {
|
|
|
|
load: function(id,parent) {
|
|
jQuery("#vtbusy_info").show();
|
|
//crmv@115268
|
|
if (jQuery('#mynotes_mode').length > 0) var mynotes_mode = jQuery('#mynotes_mode').val(); else var mynotes_mode = 'DetailViewMyNotesWidget';
|
|
window.parent.document.getElementById('frameDetailViewMyNotesWidget').src = 'index.php?module=MyNotes&action=DetailView&mode='+mynotes_mode+'&record='+id+'&parent='+parent;
|
|
//crmv@115268e
|
|
},
|
|
create: function(parent) {
|
|
jQuery("#vtbusy_info").show();
|
|
window.parent.document.getElementById('frameDetailViewMyNotesWidget').src = 'index.php?module=MyNotes&action=MyNotesAjax&file=widgets/create&parent='+parent;
|
|
},
|
|
save: function(parent) {
|
|
|
|
//crmv@91082
|
|
if(!SessionValidator.check()) {
|
|
SessionValidator.showLogin();
|
|
return false;
|
|
}
|
|
//crmv@91082e
|
|
|
|
var form = document.forms['EditView'];
|
|
form.action.value='Save';
|
|
|
|
var valid = formValidate(form);
|
|
if (!valid) return;
|
|
|
|
jQuery("#vtbusy_info").show();
|
|
|
|
jQuery.ajax({
|
|
url: jQuery(form).attr('action'),
|
|
data: jQuery(form).serialize()+'&mode=DetailViewMyNotesWidget&parent='+parent,
|
|
dataType: 'json',
|
|
type: 'POST',
|
|
success: function(data, status, xhr) {
|
|
if (data['success'] != 'true') {
|
|
jQuery("#vtbusy_info").hide();
|
|
alert(alert_arr.ERROR);
|
|
} else {
|
|
MyNotesDVW.load(data['record'],data['parent']);
|
|
}
|
|
},
|
|
error: function() {
|
|
jQuery("#vtbusy_info").hide();
|
|
alert(alert_arr.ERROR);
|
|
}
|
|
});
|
|
},
|
|
delete: function(id,parent,confirmationMsg) {
|
|
if (confirm(confirmationMsg)) {
|
|
jQuery("#vtbusy_info").show();
|
|
jQuery.ajax({
|
|
url: 'index.php?module=MyNotes&action=MyNotesAjax&action=Delete&record='+id+'&parent='+parent+'&mode=DetailViewMyNotesWidget',
|
|
dataType: 'json',
|
|
complete: function() {
|
|
jQuery("#vtbusy_info").hide();
|
|
},
|
|
success: function(data, status, xhr) {
|
|
if (data['success'] == 'true') {
|
|
if (data['record'] == '' || data['record'] == null)
|
|
MyNotesDVW.create(data['parent']);
|
|
else
|
|
MyNotesDVW.load(data['record'],data['parent']);
|
|
}
|
|
},
|
|
error: function() {
|
|
alert(alert_arr.ERROR);
|
|
}
|
|
});
|
|
}
|
|
return false;
|
|
}
|
|
};
|
|
}
|
|
// crmv@192033e
|