$(document).ready(function(){ /** * Fast Navigator */ $('#fast_navagator select[name="category"]').change(function(){ var alias = $(this).val(); //console.log( alias ) if(alias == 'null'){ $('#fast_navagator select[name="hub"]').html('').attr('disabled', true); }else{ $.post('/json/hubs/category/'+alias+'/', function(json){ if(json.messages=='ok'){ var hubs = ''; for(k in json.hubs){ hubs += ''; } $('#fast_navagator select[name="hub"]').html(hubs).attr('disabled', false); $('#fast_navagator input[type="submit"]').attr('disabled', false); }else{ show_system_error(json); } },'json'); } }); $('#fast_navagator').submit(function(){ var hub = $('#fast_navagator select[name="hub"]').val(); document.location.href = '/hub/'+hub+'/'; return false; }); /** * Нравится/не нравится компания */ $('#addCompanyFan').click(function(){ var id = $(this).attr('data-id'); var link = $(this); link.addClass('loading'); $.post('/json/corporation/fan_add/', {'company_id':id}, function(json){ if(json.messages =='ok'){ $('#removeCompanyFan').removeClass('hidden'); $('#addCompanyFan').addClass('hidden'); $('#fans_count').text(json.fans_count_str); }else{ show_system_error(json); } link.removeClass('loading'); },'json'); return false; }); $('#removeCompanyFan').click(function(){ var id = $(this).attr('data-id'); var link = $(this); link.addClass('loading'); $.post('/json/corporation/fan_del/', {'company_id':id}, function(json){ if(json.messages =='ok'){ $('#removeCompanyFan').addClass('hidden'); $('#addCompanyFan').removeClass('hidden'); $('#fans_count').text(json.fans_count_str); }else{ show_system_error(json); } link.removeClass('loading'); },'json'); return false; }); /** * Ниже расположен код для блока "Настройки ленты". * Кратко: при клике на ссылку "показать настройки" мы подгружаем список категорий аяксом. * При клике на категорию подгружаем список блогов аяксом. * В конце сабмитится форма с настройками :) */ // Preload ajax loader var ajaxloader = $(''); // global objects var hubs_category = $('#hubs_category'); var habralenta_settings = $('#habralenta-settings'); var form_habralenta_settings = $('#form_habralenta_settings'); var show_habralenta_settings = $('#show_habralenta_settings'); var save_success = $('#save_success'); /* lenta_blogs.tpl - Hide Settings - hide all categories */ $('#hide_habralenta_settings').live('click', function(e){ form_habralenta_settings.toggleClass('show'); show_habralenta_settings.toggleClass('hide'); $.scrollTo(habralenta_settings, 800); return false; }); /* lenta_blogs.tpl - Show Settings - show all categories */ $('#show_habralenta_settings').live('click', function(e){ save_success.removeClass('show'); if( hubs_category.html() != '' ){ form_habralenta_settings.toggleClass('show'); show_habralenta_settings.toggleClass('hide'); return false }else{ $('a',show_habralenta_settings).after(ajaxloader) } $.get('/json/hubs/categories/', function(json){ var categorylist = ''; $.each(json.categories, function(index, category) { var full = category.subscription == 2 ? 'full' : ''; var part = category.subscription == 1 ? 'part' : ''; var checkbox_title = category.subscription == 2 ? 'Отписаться от всех хабов в этой категории' : 'Подписаться на все хабы в этой категории'; var url = (category.alias == 'corporative_blogs') ? '/companies/' : '/hubs/'+category.alias+'/'; var disabled = (json.lenta_show_all || category.count == 0) ? 'disabled' : ''; var have_new = category.have_new ? ' '+category.have_new+'' : '' ; var category_title = category.count > 0 ? ''+category.title+'' : ''+category.title+'' ; categorylist += '
\
\ \
\ '+category_title+'\ ('+category.count+')\ '+have_new+'\
\
\
'; }); ajaxloader.remove(); hubs_category.html(categorylist); form_habralenta_settings.toggleClass('show'); show_habralenta_settings.toggleClass('hide'); $(".lenta-tip").tipTip({maxWidth: "300", edgeOffset: 10}); /* lenta_blogs.tpl - Blogs Category - show all blogs in category */ $('.category .title a', hubs_category).live('click', function(){ var node = $(this); var category = node.parent().parent('.category'); var hubs = $('.hubs', category); var count = $('.title .count',category); var alias = category.attr('data-alias'); if(category.hasClass('disabled')) return false; if(hubs.html()){ hubs.toggleClass('show'); }else{ count.after(ajaxloader); $.get('/json/hubs/category/'+alias+'/', function(json){ var bloglist = ''; if( alias == 'corporative_blogs' ){ //bloglist += '
Компании, которые мне нравятся ↓
'; } $.each(json.hubs, function(index, hub) { if( category.hasClass('full') ){ hub.subscription = 1; }else if( category.hasClass('part') ){ // если частично стоит - значит берем то что пришло с сервера. }else{ hub.subscription = 0; } var subscription = hub.subscription ? 'subscription' : ''; var checkbox_title = hub.subscription ? 'Отписаться от хаба' : 'Подписаться на хаб'; var url = (alias == 'corporative_blogs') ? '/company/'+hub.alias+'/blog/' : '/hub/'+hub.alias+'/'; var is_new = hub.is_new ? ' новый' : '' ; bloglist += '
\
\ \ '+hub.name+'\ '+is_new+'\
'; }); ajaxloader.remove(); hubs.html(bloglist); hubs.toggleClass('show'); $('.hub a', hubs).click(function(){ var node = $(this); var hub = node.parent('.hub'); var category = hub.parent().parent('.category'); if(category.hasClass('disabled')) return false; }); // add click event to blog checkbox $('.hub .checkbox', hubs).click(function(){ var node = $(this); var hub = node.parent('.hub'); var category = hub.parent().parent('.category'); var hub_input = $('.input',hub); var category_input = $('> .input',category); if(category.hasClass('disabled')) return false; if( hub.hasClass('subscription') ){ hub.removeClass('subscription'); hub_input.val(0); }else{ hub.addClass('subscription'); hub_input.val(1); } // Здесь нужно проверить - сколько галочек в списке поставлено. // Если все - то надо ставить для категории класс 'full' // Если не все, но хотя бы одна - то класс 'part' // Если не одной, то надо убирать у категории классы part или full. var active_hubs = $('.subscription',hubs); var all_hubs = $('.hub',hubs); if( active_hubs.size() == 0 ){ category.removeClass('part').removeClass('full'); category_input.val(0); }else if(active_hubs.size() == all_hubs.size()){ category.removeClass('part').addClass('full'); category_input.val(2); }else{ category.removeClass('full').addClass('part'); category_input.val(1); } }); },'json'); } return false; }); /* lenta_blogs.tpl - Category Checkbox */ $('.category > .checkbox',hubs_category).live('click', function(){ var node = $(this); var category = node.parent('.category'); var alias = category.attr('data-alias'); var hubs = $('.hubs',category); var category_input = $('.input',category); if(category.hasClass('disabled')) return false; //console.log('event click category '+alias); if( category.hasClass('full') ){ category.removeClass('full').removeClass('part'); category_input.val(0); $('.hub',hubs).removeClass('subscription'); $('.hub .input',hubs).val(0); }else if( category.hasClass('part') ){ category.removeClass('part').addClass('full'); category_input.val(2); $('.hub',hubs).addClass('subscription'); $('.hub .input',hubs).val(1); }else{ category.addClass('full'); category_input.val(2); $('.hub',hubs).addClass('subscription'); $('.hub .input',hubs).val(1); } return false; }); },'json'); return false; }); ///////// SAVE FORM $('#form_habralenta_settings').ajaxForm({ form: $('#form_habralenta_settings'), url: '/json/hubs/save_subscriptions/', beforeSubmit: ajaxFormBeforSubmit, error: ajaxFormError, success: ajaxFormSuccess(function(json, statusText, xhr, jqForm){ $.jGrowl('Настройки ленты успешно сохранились'); document.location.reload(); }) }); });