personnale notes front ajax is working, remains to improve the display, do it like liked materiaux

This commit is contained in:
Bachir Soussi Chiadmi
2017-11-28 17:02:45 +01:00
parent 268c8b619b
commit 7d5bedcb0c
8 changed files with 357 additions and 158 deletions

View File

@@ -1,2 +1,10 @@
(function($){MaterioPersonalNotes=function(){function init(){trace('MaterioPersonalNotes :: init');};init();};$(document).ready(function(){var materioflag=new MaterioPersonalNotes();});})(jQuery);
(function($){MaterioPersonalNotes=function(){function init(){trace('MaterioPersonalNotes :: init');$(document).bind('resultscompleted resultschanged previewloaded',onResultsUpdated);};function onResultsUpdated(event){trace('MaterioPersonalNotes :: onResultsUpdated',event);ajaxifyLinks(event.container);};function ajaxifyLinks(container){trace('MaterioPersonalNotes :: ajaxifyLinks',container);container=((container!=null)?container:'body');$('a.personal-note-link:not(.ajax-processed), ',container).bind('click',onClickLink).addClass('ajax-processed');};function onClickLink(event){event.preventDefault();var $link=$(event.currentTarget);var note_nid=$link.attr('note_nid');var action=note_nid?'edit':'create';var src_nid=$link.attr('src_nid');trace('MaterioPersonalNotes :: src_nid',src_nid);trace('MaterioPersonalNotes :: note_nid',note_nid);var url=Drupal.settings.basePath
+Drupal.settings.pathPrefix
+'materio_personalnotes/form/'+action
+'/'+src_nid;if(action=='edit'){url+='/'+note_nid;}
$.getJSON(url,function(json){trace('MaterioPersonalNotes :: '+action+' : json',json);if(json.new_note_nid){updateNoteLink($link,json.new_note_nid);}
showNoteForm(json);});return false;};function updateNoteLink($link,new_note_nid){trace('MaterioPersonalNotes :: updateNoteLink : new_note_nid',new_note_nid);$link.attr('note_nid',new_note_nid);$link.attr('href',Drupal.settings.pathPrefix+'node/'+new_note_nid+'/edit');};function showNoteForm(json){trace('MaterioPersonalNotes :: showNoteForm');$.event.trigger({type:"record-stat",categorie:"PersonalNotes",action:'show create form'});var $modal=$('<div id="modal" class="modal note-modal"/>').appendTo('body');$modal.css({position:'absolute',top:'40%',left:'50%',marginLeft:'-150px',width:'500px',zIndex:"99999"}).append($('<div class="close"></i><div>').bind('click',function(){trace('close note');$(this).parents('#modal').remove();}));$modal.append(json.rendered_form).find('textarea').focus().bind('change keyup paste',function(event){var note_nid=$(this).parents('form').find('input[name="note_nid"]').val();saveNote($(this).val(),note_nid);});$modal.find('input[type="submit"], .homepage-textfield').hide();};function saveNote(text,note_nid){trace(text,'MaterioPersonalNotes :: saveNote : text');var url=Drupal.settings.basePath
+Drupal.settings.pathPrefix
+'materio_personalnotes/save'
+'/'+note_nid;$.post(url,{'content':text},function(data,status){trace('MaterioPersonalNotes :: save : status',status);});};init();};$(document).ready(function(){var materioflag=new MaterioPersonalNotes();});})(jQuery);

View File

@@ -12,14 +12,132 @@ MaterioPersonalNotes = function(){
function init(){
trace('MaterioPersonalNotes :: init');
$(document)
.bind('resultscompleted resultschanged previewloaded', onResultsUpdated);
// .bind('init-scroller-pager', onInitScrollerPager)
// .bind('load-scroller-pager', onLoadScrollerPager)
// .bind('view-mode-changed', onViewModeChanged)
// .bind('history-state-change', onHistoryStateChange);
};
function onResultsUpdated(event){
trace('MaterioPersonalNotes :: onResultsUpdated', event);
ajaxifyLinks(event.container);
};
function ajaxifyLinks(container){
trace('MaterioPersonalNotes :: ajaxifyLinks', container);
container = ((container != null) ? container : 'body');
// trace('MaterioFlag :: typeof Drupal.flagLink', typeof Drupal.flagLink);
// if (typeof Drupal.flagLink != 'undefined')
// Drupal.flagLink(container);
$('a.personal-note-link:not(.ajax-processed), ', container)
.bind('click', onClickLink)
.addClass('ajax-processed');
// $('a.personal-note-edit:not(.ajax-processed)', container)
// .bind('click', {'action':'edit'}, onClickLink)
// .addClass('ajax-processed');
};
/**
* onClickCreatLink(event)
*/
function onClickLink(event){
// trace('MaterioPersonalNotes :: onClickLink | '+action+' | event', event);
event.preventDefault();
var $link = $(event.currentTarget);
var note_nid = $link.attr('note_nid');
var action = note_nid ? 'edit' : 'create';
var src_nid = $link.attr('src_nid');
trace('MaterioPersonalNotes :: src_nid', src_nid);
trace('MaterioPersonalNotes :: note_nid', note_nid);
var url = Drupal.settings.basePath
+Drupal.settings.pathPrefix
+'materio_personalnotes/form/'+action
+'/'+src_nid;
if(action == 'edit'){
url += '/'+note_nid;
}
$.getJSON(url, function(json){
trace('MaterioPersonalNotes :: '+action+' : json', json);
if(json.new_note_nid){
updateNoteLink($link, json.new_note_nid);
}
showNoteForm(json);
});
return false;
};
function updateNoteLink($link, new_note_nid){
trace('MaterioPersonalNotes :: updateNoteLink : new_note_nid', new_note_nid);
$link.attr('note_nid', new_note_nid);
$link.attr('href', Drupal.settings.pathPrefix+'node/'+new_note_nid+'/edit');
};
function showNoteForm(json){
trace('MaterioPersonalNotes :: showNoteForm');
// google analytics
$.event.trigger({
type:"record-stat",
categorie:"PersonalNotes",
action: 'show create form'
});
var $modal = $('<div id="modal" class="modal note-modal"/>').appendTo('body');
$modal
.css({
position:'absolute',
top:'40%', left:'50%',
marginLeft:'-150px', width:'500px',
zIndex:"99999"
})
.append($('<div class="close"></i><div>')
.bind('click', function(){
trace('close note');
$(this).parents('#modal').remove();
})
);
$modal
.append(json.rendered_form)
.find('textarea')
.focus()
.bind('change keyup paste', function(event){
// trace('text changed', $(this).val());
var note_nid = $(this).parents('form').find('input[name="note_nid"]').val();
saveNote($(this).val(), note_nid);
});
$modal
.find('input[type="submit"], .homepage-textfield').hide();
// TODO: esc keypressed close the form
};
function saveNote(text, note_nid){
trace(text, 'MaterioPersonalNotes :: saveNote : text');
var url = Drupal.settings.basePath
+Drupal.settings.pathPrefix
+'materio_personalnotes/save'
+'/'+note_nid;
$.post(url, {'content':text}, function(data, status){
trace('MaterioPersonalNotes :: save : status', status);
});
};
init();
};
$(document).ready(function() {