/* Wifi Hotspot app for YunoHost * Copyright (C) 2015 Julien Vaubourg * Contribute at https://github.com/labriqueinternet/hotspot_ynh * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ function wifiSecureBtn() { if($(this).parent().hasClass('off')) { $(this).closest('.form-group').next().hide('slow'); } else { $(this).closest('.form-group').next().show('slow'); } } function tabsClick() { var ssid = $(this).closest('.ssid'); var tab = $(this).parent().attr('data-tab'); ssid.find('li.active').removeClass('active'); $(this).parent().addClass('active'); ssid.find('.tabs').hide(); ssid.find('.tab' + tab).show(); return false; } function deviceDropDownClick() { var menu = $(this).parent(); var items = menu.children(); var button = menu.prev(); var input = button.prev(); items.removeClass('active'); $(this).addClass('active'); button.text($(this).text()); button.append(' '); input.val($(this).text()); updateNbSsidRemaining(); } function updateNbSsidRemaining() { multissid = $('#devlist .active').data('multissid'); current = $('.ssid').length; remaining = multissid - current; remaining = isNaN(remaining) ? 0 : remaining; $('.ssid').each(function(i) { if(i >= multissid) { $(this).removeClass('panel-default'); $(this).addClass('panel-danger'); } else { $(this).removeClass('panel-danger'); $(this).addClass('panel-default'); } }); $('.ssid').find('.deletessid').hide(); $('.ssid').last().find('.deletessid').show(); $('.ssid').first().find('.deletessid').hide(); if(remaining <= 0) { $('#newssid').attr('disabled', true); $('#newssid').removeClass('btn-success'); $('#newssid').addClass('btn-danger'); } else { $('#newssid').attr('disabled', false); $('#newssid').removeClass('btn-danger'); $('#newssid').addClass('btn-success'); } $('#newssid span').text(remaining); } function nice() { if($(this).val() == 'YoloCowboy') { $('#nice')[0].play(); } } function deleteClick() { $(this).closest('.ssid').remove(); updateNbSsidRemaining(); } $(document).ready(function() { $('.btn-group').button(); $('[data-toggle="tooltip"]').tooltip(); $('.dropdown-menu li').click(deviceDropDownClick); $('.switch').bootstrapToggle(); $('#save').click(function() { $(this).prop('disabled', true); $('#save-loading').show(); $('#form').submit(); }); $('#saveconfirm').click(function() { $(this).hide(); $('#saveconfirmation').show(); }); $('#status .close').click(function() { $(this).parent().hide(); }); $('#statusbtn').click(function() { if($('#status-loading').is(':hidden')) { $('#status').hide(); $('#status-loading').show(); $.ajax({ url: '?/status', }).done(function(data) { $('#status-loading').hide(); $('#status-text').html(''); $('#status').show('slow'); }); } }); $('.wifiparty').click(function() { var screen = $('#wifiparty_screen'); var passphrase = $(this).closest('.ssid').find('.wifiparty_passphrase').clone(); screen.find('#wifiparty_ssid span').last().text($(this).closest('.ssid').find('input[type=text]').first().val()); screen.find('.wifiparty_passphrase').remove(); screen.append(passphrase); screen.find('.wifiparty_passphrase').show(); screen.show('slow'); }); $('#wifiparty_zoomin_ssid').mousedown(function() { $('#wifiparty_ssid').css('fontSize', (parseInt($('#wifiparty_ssid').css('fontSize')) + 5) + "px"); }); $('#wifiparty_zoomout_ssid').mousedown(function() { $('#wifiparty_ssid').css('fontSize', (parseInt($('#wifiparty_ssid').css('fontSize')) - 5) + "px"); }); $('#wifiparty_zoomin_passphrase').mousedown(function() { $('#wifiparty_screen .wifiparty_passphrase').css('fontSize', (parseInt($('#wifiparty_screen .wifiparty_passphrase').css('fontSize')) + 7) + "px"); }); $('#wifiparty_zoomout_passphrase').mousedown(function() { $('#wifiparty_screen .wifiparty_passphrase').css('fontSize', (parseInt($('#wifiparty_screen .wifiparty_passphrase').css('fontSize')) - 7) + "px"); }); $('#wifiparty_close').click(function() { $('#wifiparty_screen').hide(); }); $('.wifi_secure').change(wifiSecureBtn); $('#service_enabled').change(function() { if($('#service_enabled').parent().hasClass('off')) { $('.enabled').hide('slow'); } else { $('.enabled').show('slow'); } }); $('.nav-tabs a').click(tabsClick); $('.ssidin').blur(nice); $('#newssid').click(function() { var clone = $('#ssids').children().first().clone(); var id = parseInt($('.ssid').length); clone.find('[name]').each(function() { $(this).attr('name', $(this).attr('name').replace('[0]', '[' + id + ']')); }); clone.find('[data-toggle="tooltip"]').tooltip(); clone.find('.deletessid').click(deleteClick); clone.find('.ssidin').blur(nice); clone.find('.wifiparty_passphrase').remove(); clone.find('.wifiparty').attr('disabled', true); clone.find('input[type=text]').each(function() { if($(this).attr('name').match('dns')) { $(this).val($(this).attr('placeholder')); } else if($(this).attr('name').match('ip4_nat_prefix')) { var o1 = parseInt(Math.random() * (255 - 1) + 1); var o2 = parseInt(Math.random() * (255 - 1) + 1); $(this).val('10.' + o1 + '.' + o2); } else if($(this).attr('name').match('wifi_ssid')) { $(this).val('myNeutralNetwork' + (id + 1)); } else { $(this).val(''); } }); clone.find('input[type=checkbox]').each(function() { $(this).parent().after($(this)); $(this).prev().remove(); $(this).attr('checked', false); }); clone.find('.switch').bootstrapToggle(); clone.find('.wifi_secure').change(wifiSecureBtn); clone.find('.nav-tabs a').click(tabsClick); clone.find('.wifi_passphrase').hide(); clone.find('h3').each(function() { $(this).text($(this).data('label') + ' ' + (id + 1)); }); $('#ssids').append(clone); updateNbSsidRemaining(); }); $('.deletessid').click(deleteClick); updateNbSsidRemaining(); }); $(document).keydown(function(e) { if(e.keyCode == 27) { $('#wifiparty_close').click(); } });