materio_flag.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. // @codekit-prepend "gui.js"
  2. (function($) {
  3. MaterioFlag = function(){
  4. /**
  5. * init()
  6. */
  7. function init(){
  8. trace('init MaterioFlag');
  9. $(document).bind('flagGlobalAfterLinkUpdate', onFlaging);
  10. $(document).bind('resultscompleted', onResultsUpdated);
  11. ajaxifyLinks();
  12. };
  13. function onFlaging(event){
  14. trace('onFlaging', event);
  15. if($('#block-materio-flag-materio-flag-mybookmarks').length){
  16. $.getJSON('/materioflag/refresh/block/bookmarks', function(json){
  17. trace('json', json);
  18. $('#block-materio-flag-materio-flag-mybookmarks').replaceWith(json.block);
  19. Drupal.flagLink('#block-materio-flag-materio-flag-mybookmarks');
  20. // TODO: update flags stars on search results after unflaging from block
  21. $.event.trigger('mybookmarks-block-updated');
  22. });
  23. }
  24. if($('#block-materio-flag-materio-flag-mylists').length){
  25. $.getJSON('/materioflag/refresh/block/mylists', function(json){
  26. trace('json', json);
  27. $('#block-materio-flag-materio-flag-mylists').replaceWith(json.block);
  28. Drupal.flagLink('#block-materio-flag-materio-flag-mylists');
  29. // TODO: update flags stars on search results after unflaging from block
  30. $.event.trigger('mylists-block-updated');
  31. });
  32. }
  33. };
  34. function onResultsUpdated(event){
  35. trace('onResultsUpdated', event);
  36. ajaxifyLinks(event.container);
  37. };
  38. function ajaxifyLinks(cont){
  39. trace('ajaxifyLinks');
  40. var container = cont || 'body';
  41. $('a.flag-lists-create:not(.ajax)', container)
  42. .bind('click', onClickCreatLink)
  43. .addClass('ajax');
  44. };
  45. function onClickCreatLink(event){
  46. event.preventDefault();
  47. var $link = $(event.currentTarget);
  48. var type = $link.attr('href').match(/[^\/]*$/);
  49. // trace('type', type);
  50. var url = 'materioflag/createlist/form/'+type[0];
  51. $.getJSON(url, function(json){
  52. trace('json', json);
  53. showCreateListForm(json);
  54. });
  55. return false;
  56. }
  57. function showCreateListForm(json){
  58. var $modal = $('<div id="modal"/>').appendTo('body');
  59. $modal
  60. .css({
  61. position:'absolute',
  62. top:'40%', left:'50%',
  63. marginLeft:'-200px', width:'400px',
  64. zIndex:"99999"
  65. })
  66. .append(json.return);
  67. // .find('#flag-lists-form').bind('submit', function(event) {
  68. // trace('submit',event);
  69. // var title = $(this).find('input[name*="title"]').val();
  70. // createList(title);
  71. // return false;
  72. // });
  73. };
  74. function createList(title){
  75. var url = 'materioflag/createlist/'+title;
  76. $.getJSON(url, function(json){
  77. trace('json', json);
  78. });
  79. };
  80. init();
  81. };
  82. var materioflag = new MaterioFlag();
  83. })(jQuery);