New folders block nav

++
search field : select on focus

Signed-off-by: bachy <git@g-u-i.net>
This commit is contained in:
bachy
2012-11-16 20:02:37 +01:00
parent 7dafe10be1
commit d2285db42a
11 changed files with 231 additions and 111 deletions

File diff suppressed because one or more lines are too long

View File

@@ -9,7 +9,10 @@ MaterioFlag = function(){
* init()
*/
function init(){
trace('init MaterioFlag');
trace('MaterioFlag :: init MaterioFlag');
buildBlocks();
$(document)
.bind('flagGlobalAfterLinkUpdate', onFlaging)
.bind('resultscompleted resultschanged', onResultsUpdated)
@@ -29,12 +32,48 @@ MaterioFlag = function(){
};
function onFlaging(event){
trace('onFlaging', event);
trace('MaterioFlag :: onFlaging', event);
refreshBlocks();
};
function onResultsUpdated(event){
trace('MaterioFlag :: onResultsUpdated', event);
ajaxifyLinks(event.container);
};
function buildBlocks(activename){
trace('MaterioFlag :: buildBlocks', activename);
// nav block
$('a.open-list:not(.ajax-processed)', '#block-materio-flag-materio-flag-mylists-nav').each(function(index){
$this = $(this)
.bind('click', onClickOpenLink)
.addClass('ajax-processed');
var name = $this.attr('class').match(/flag_lists_[^_]+_[0-9]+/);
// trace('MaterioFlag :: name', name);
$('<span class="preview">open preview</span>').attr('name', name).insertAfter($this).bind('click', onClickShowPreview);
});
// preview block
$('section.flag-list:not(.ajax-processed)', '#block-materio-flag-materio-flag-mylists').each(function(index){
var name = $(this).attr('class').match(/flag_lists_[^_]+_[0-9]+/);
$('<i class="icon-remove"></i>').appendTo($('h2.listname', this)).attr('name', name).bind('click', onClickClosePreview);
$('a.open-list', this).bind('click', onClickOpenLink);
}).addClass('ajax-processed');
// trace('MaterioFlag :: activename', activename);
if(activename == undefined)
activename = readCookie('materiomyflaglistsopened');
// trace('MaterioFlag :: activename', activename);
if(activename)
showPreview(activename);
};
function refreshBlocks(name){
trace('refreshBlocks | name', name);
trace('MaterioFlag :: refreshBlocks | name', name);
if($('#block-materio-flag-materio-flag-mybookmarks').length){
var type = 'bookmarks';
}else if($('#block-materio-flag-materio-flag-mylists').length){
@@ -43,9 +82,14 @@ MaterioFlag = function(){
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);
var url = Drupal.settings.basePath+Drupal.settings.pathPrefix+'materioflag/refresh/block/'+type;
$.getJSON(url, function(json){
trace('MaterioFlag :: block refreshed '+type, json);
$(id).replaceWith(json.block);
$('#block-materio-flag-materio-flag-mylists-nav').replaceWith(json.block_nav);
buildBlocks(name);
$.event.trigger({
type : 'my'+type+'-block-updated',
@@ -57,34 +101,54 @@ MaterioFlag = function(){
ajaxifyLinks();
};
function onResultsUpdated(event){
trace('MaterioFlag :: onResultsUpdated', event);
ajaxifyLinks(event.container);
};
function ajaxifyLinks(container){
trace('ajaxifyLinks', container);
trace('MaterioFlag :: ajaxifyLinks', container);
container = ((container != null) ? container : 'body');
// trace('typeof Drupal.flagLink', typeof Drupal.flagLink);
// trace('MaterioFlag :: 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');
};
/**
* show hide preview
*/
function onClickShowPreview(event){
trace('MaterioFlag :: onClickShowPreview', event);
showPreview($(this).attr('name'));
};
function showPreview(name){
trace('MaterioFlag :: showPreview', name);
$('section.'+name, '#block-materio-flag-materio-flag-mylists').addClass('active')
.siblings('section').removeClass('active');
createCookie('materiomyflaglistsopened', name, 1);
$.event.trigger('init-layout');
};
function onClickClosePreview(event){
trace('MaterioFlag :: onClickClosePreview', event);
eraseCookie('materiomyflaglistsopened');
$(this).parents('section.flag-list').removeClass('active');
$.event.trigger('init-layout');
};
/**
* onClickOpenLink
*/
function onClickOpenLink(event){
event.preventDefault();
var $link = $(event.currentTarget);
var fid = $link.attr('href').match(/lists\/([0-9]+)$/);
// trace('type', type);
// trace('MaterioFlag :: type', type);
loadList(fid[1]);
return false;
};
@@ -95,7 +159,7 @@ MaterioFlag = function(){
$.event.trigger('loading-content');
$.getJSON(url, function(json){
trace('json', json);
trace('MaterioFlag :: json', json);
changeContent(json);
});
};
@@ -128,7 +192,7 @@ MaterioFlag = function(){
triggerContentChanged();
}else{
trace('no results');
trace('MaterioFlag :: no results');
}
};
@@ -139,15 +203,18 @@ MaterioFlag = function(){
});
};
/**
* onClickCreatLink(event)
*/
function onClickCreatLink(event){
event.preventDefault();
var $link = $(event.currentTarget);
var type = $link.attr('href').match(/[^\/]*$/);
// trace('type', type);
// trace('MaterioFlag :: type', type);
var url = Drupal.settings.basePath+Drupal.settings.pathPrefix+'materioflag/createlist/form/'+type[0];
$.getJSON(url, function(json){
trace('json', json);
trace('MaterioFlag :: json', json);
showCreateListForm(json, $link);
});
return false;
@@ -175,7 +242,7 @@ MaterioFlag = function(){
event.preventDefault();
switch($(this).attr('name')){
case 'cancel':
trace('cancel',event);
trace('MaterioFlag :: cancel',event);
$(this).parents('#modal').remove();
// google analytics
@@ -187,7 +254,7 @@ MaterioFlag = function(){
break;
case 'create':
trace('create',event);
trace('MaterioFlag :: create',event);
var title = $(this).parents('form').find('input[name*="flag-lists-name"]').val();
var type = $(this).parents('form').find('input[name*="type"]').val();
@@ -219,7 +286,7 @@ MaterioFlag = function(){
// select.append('<option value="'+data.flag.fid+'">'+data.flag.title+'</option>');
// $('input.name', $(this)).val('');
// dialog.dialog('close');
trace('created list : data', data);
trace('MaterioFlag :: created list : data', data);
flagEntityWithList(data.flag.name, $link.attr('nid'), $link.attr('token'));
$modal.remove();
@@ -236,7 +303,7 @@ MaterioFlag = function(){
data: { js: true, token: token },
dataType: 'json',
success: function (data2) {
trace('node taged with newly created list : data2', data2)
trace('MaterioFlag :: node taged with newly created list : data2', data2)
if (data2.status) {
// google analytics
@@ -266,17 +333,17 @@ MaterioFlag = function(){
$('.flag-lists-entity-links').parents('.node').each(function(index) {
nids.push($(this).attr('class').match(/node-([0-9]+)/)[1]);
});
// trace('nids', nids);
// trace('MaterioFlag :: nids', nids);
var url = Drupal.settings.basePath+Drupal.settings.pathPrefix+'materioflag/nodelinks';
$.getJSON(url, {nids:nids.join(";")}, function(data) {
// trace('data', data);
// trace('MaterioFlag :: data', data);
for(nid in data.links){
// trace('nid', nid);
// trace('data.links[nid]', data.links[nid]);
// trace('MaterioFlag :: nid', nid);
// trace('MaterioFlag :: data.links[nid]', data.links[nid]);
$('.node-'+nid+' .flag-lists-entity-links').parent('.item-list').replaceWith(data.links[nid]);
// trace('typeof Drupal.flagLink', typeof Drupal.flagLink);
// trace('MaterioFlag :: typeof Drupal.flagLink', typeof Drupal.flagLink);
// if (typeof Drupal.flagLink != 'undefined')
// Drupal.flagLink($('.node-'+nid+' .flag-lists-entity-links'));
@@ -292,9 +359,9 @@ MaterioFlag = function(){
};
function onInitScrollerPager(event){
// trace('MaterioFlag :: onInitScrollerPager');
// trace('MaterioFlag :: MaterioFlag :: onInitScrollerPager');
if (isList()){
// trace('event.pager', event);
// trace('MaterioFlag :: event.pager', event);
event.pager.hide();
}
};
@@ -305,18 +372,18 @@ MaterioFlag = function(){
};
function loadNextListPage(href){
// trace('loadNextListPage', href);
// trace('MaterioFlag :: loadNextListPage', href);
if(!_isLoadingList){
var fid = href.match(/lists\/([^\/|\?]+)/);
var page = href.match(/\?page=([0-9]+)/);
var url = Drupal.settings.basePath+Drupal.settings.pathPrefix+'materioflag/ajax/list/'+fid[1]+'/'+page[1];
// trace('url', url);
// trace('MaterioFlag :: url', url);
loadNextPage(url, $('.materio-flags-list', '#content'), '.flaglist-items');
}
};
function loadNextPage(url, $container, target){
trace('loadNextPage');
trace('MaterioFlag :: loadNextPage');
_isLoadingList = true;
$container.addClass('loading');
$.getJSON(url, function(json){
@@ -377,6 +444,35 @@ MaterioFlag = function(){
};
/**
* cookies
*/
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
init();

File diff suppressed because one or more lines are too long

View File

@@ -14,7 +14,6 @@ MaterioSearchApiAjax = function(){
initSearchAjax();
initViewMode();
};
/**
@@ -33,9 +32,13 @@ MaterioSearchApiAjax = function(){
});
// /!\ AUTOCOMPLETE SELECT EVENT need a patch http://drupal.org/node/365241#comment-5374686
$("#edit-searchfield").bind('autocompleteSelect', function(event) {
$(this).parents('.form').trigger('submit');
});
$("#edit-searchfield")
.bind('autocompleteSelect', function(event) {
$(this).parents('.form').trigger('submit');
})
.bind('focus', function(event){
$(this).select();
});
$(document)
.bind('init-scroller-pager', onInitScrollerPager)
@@ -79,14 +82,6 @@ MaterioSearchApiAjax = function(){
_isloadingresults = true;
$('#materio-search-api-search-form').addClass('loading');
// google analytics
$.event.trigger({
type : "record-stat",
categorie : 'Search event',
action : 'Search',
label : 'keys :'+ keys +' | filters : '+ stringTypes.join(' ,')
});
// TODO: record ajax path in a variable from materio_search_api_ajax_init
$.getJSON(Drupal.settings.basePath+Drupal.settings.pathPrefix+'materio_search_api_ajax/search/'+keys,
{'types':types},
@@ -96,6 +91,15 @@ MaterioSearchApiAjax = function(){
_isloadingresults = false;
$('#materio-search-api-search-form').removeClass('loading');
// google analytics
$.event.trigger({
type : "record-stat",
categorie : 'Search',
action : keys,
label : 'filters : '+ stringTypes.join(' ,'),
value : json.count
});
changeContent(json);
});
}
@@ -133,7 +137,7 @@ MaterioSearchApiAjax = function(){
$.event.trigger({
type : 'new-history-page',
path : Drupal.settings.basePath + Drupal.settings.pathPrefix + json.search_path + '/' + json.keys,
path : Drupal.settings.basePath + Drupal.settings.pathPrefix + json.path,
title : json.title,
content : json.return
});