// @codekit-prepend "gui.js" (function($) { MaterioFlag = function(){ var _isLoadingList = false ; /** * init() */ function init(){ trace('init MaterioFlag'); $(document) .bind('flagGlobalAfterLinkUpdate', onFlaging) .bind('resultscompleted resultschanged', onResultsUpdated) .bind('init-scroller-pager', onInitScrollerPager) .bind('load-scroller-pager', onLoadScrollerPager) .bind('view-mode-changed', onViewModeChanged) .bind('history-state-change', onHistoryStateChange); ajaxifyLinks(); // trigger updated event for direct html loading if(isList()){ setTimeout(function(){ triggerContentChanged(); }, 10); } }; function onFlaging(event){ trace('onFlaging', event); refreshBlocks(); }; function refreshBlocks(name){ trace('refreshBlocks | name', name); if($('#block-materio-flag-materio-flag-mybookmarks').length){ var type = 'bookmarks'; }else if($('#block-materio-flag-materio-flag-mylists').length){ var type = 'lists'; } if(type != undefined){ var id = '#block-materio-flag-materio-flag-my'+type; $.getJSON(Drupal.settings.basePath+Drupal.settings.pathPrefix+'materioflag/refresh/block/'+type, function(json){ trace('block refreshed '+type, json); $(id).replaceWith(json.block); var event = jQuery.Event('my'+type+'-block-updated'); event.listname = name; $.event.trigger(event); }); } ajaxifyLinks(); }; function onResultsUpdated(event){ trace('MaterioFlag :: onResultsUpdated', event); ajaxifyLinks(event.container); }; function ajaxifyLinks(container){ trace('ajaxifyLinks', container); container = ((container != null) ? container : 'body'); // trace('typeof Drupal.flagLink', typeof Drupal.flagLink); if (typeof Drupal.flagLink != 'undefined') Drupal.flagLink(container); $('a.flag-lists-create:not(.ajax-processed)', container) .bind('click', onClickCreatLink) .addClass('ajax-processed'); $('a.open-list:not(.ajax-processed)', '#block-materio-flag-materio-flag-mylists') .bind('click', onClickOpenLink) .addClass('ajax-processed'); }; function onClickOpenLink(event){ event.preventDefault(); var $link = $(event.currentTarget); var fid = $link.attr('href').match(/lists\/([0-9]+)$/); // trace('type', type); loadList(fid[1]); return false; }; function loadList(fid){ var url = Drupal.settings.basePath+Drupal.settings.pathPrefix+'materioflag/ajax/list/'+fid; $.event.trigger('loading-content'); $.getJSON(url, function(json){ trace('json', json); changeContent(json); }); }; function changeContent(json){ if(json.return){ $('.inner-content','#content').html(json.return); $.event.trigger('loaded-content'); // no need of ajaxifylinks because it's triggered with resultschanged // ajaxifyLinks('#content'); var path = Drupal.settings.basePath + Drupal.settings.pathPrefix + json.path; var event = jQuery.Event('new-history-page'); event.path = path; event.title = json.title; event.content = json.return; $.event.trigger(event); // TODO: change language links for folders // for (language in Drupal.settings.materio_search_api_ajax.languages) { // var l = Drupal.settings.materio_search_api_ajax.languages[language]; // $('#block-locale-language li.'+language+' a').attr('href', Drupal.settings.basePath + l.prefix+'/' + json.search_path + '/' + json.keys) // }; triggerContentChanged(); }else{ trace('no results'); } }; function triggerContentChanged(){ var event = jQuery.Event('resultschanged'); event.container = '#content .flaglist-items'; $.event.trigger(event); }; function onClickCreatLink(event){ event.preventDefault(); var $link = $(event.currentTarget); var type = $link.attr('href').match(/[^\/]*$/); // trace('type', type); var url = Drupal.settings.basePath+Drupal.settings.pathPrefix+'materioflag/createlist/form/'+type[0]; $.getJSON(url, function(json){ trace('json', json); showCreateListForm(json, $link); }); return false; }; function showCreateListForm(json, $link){ // google analytics var estat = jQuery.Event('record-stat'); estat.path = false; estat.categorie = 'FlagLists'; estat.action = 'show create form'; estat.label = ''; $.event.trigger(estat); var $modal = $('