]> git.mxchange.org Git - friendica-addons.git/blobdiff - jappixmini/jappix/js/home.js
jappixmini: include jappix source
[friendica-addons.git] / jappixmini / jappix / js / home.js
diff --git a/jappixmini/jappix/js/home.js b/jappixmini/jappix/js/home.js
new file mode 100644 (file)
index 0000000..5322501
--- /dev/null
@@ -0,0 +1,371 @@
+/*
+
+Jappix - An open social platform
+These are the homepage JS scripts for Jappix
+
+-------------------------------------------------
+
+License: AGPL
+Authors: Vanaryon, LinkMauve
+Last revision: 15/01/12
+
+*/
+
+// Allows the user to switch the difference home page elements
+function switchHome(div) {
+       // Path to
+       var home = '#home .';
+       var right = home + 'right ';
+       var current = right + '.homediv.' + div;
+       
+       // We switch the div
+       $(right + '.homediv, ' + right + '.top').hide();
+       $(right + '.' + div).show();
+       
+       // We reset the homedivs
+       $(home + 'homediv:not(.default), ' + home + 'top:not(.default)').remove();
+       
+       // Get the HTML code to display
+       var disable_form = '';
+       var lock_host = '';
+       var code = '';
+       
+       // Apply the previous link
+       switch(div) {
+               case 'loginer':
+               case 'anonymouser':
+               case 'registerer':
+                       if(!exists(right + '.top.sub')) {
+                               // Append the HTML code for previous link
+                               $(right + '.top.default').after('<h1 class="top sub loginer anonymouser registerer">&laquo; <a href="#" class="previous">' + _e("Previous") + '</a></h1>');
+                               
+                               // Click event on previous link
+                               $(home + 'top.sub a.previous').click(function() {
+                                       return switchHome('default');
+                               });
+                       }
+               
+               break;
+       }
+       
+       // Apply the form
+       switch(div) {
+               // Login tool
+               case 'loginer':
+                       lock_host = disableInput(LOCK_HOST, 'on');
+                       code = '<p>' + printf(_e("Login to your existing XMPP account. You can also use the %s to join a groupchat."), '<a href="#" class="to-anonymous">' + _e("anonymous mode") + '</a>') + '</p>' + 
+                               
+                               '<form action="#" method="post">' + 
+                                       '<fieldset>' + 
+                                               '<legend>' + _e("Required") + '</legend>' + 
+                                               
+                                               '<label for="lnick">' + _e("Address") + '</label>' + 
+                                               '<input type="text" class="nick" id="lnick" pattern="[^@/]+" required="" /><span class="jid">@</span><input type="text" class="server" id="lserver" value="' + HOST_MAIN + '" ' + lock_host + ' pattern="[^@/]+" required="" />' + 
+                                               '<label for="lpassword">' + _e("Password") + '</label>' + 
+                                               '<input type="password" class="password" id="lpassword" required="" />' + 
+                                               '<label for="lremember">' + _e("Remember me") + '</label>' + 
+                                               '<input type="checkbox" class="remember" id="lremember" />' + 
+                                       '</fieldset>' + 
+                                       
+                                       '<a href="#" class="advanced home-images">' + _e("Advanced") + '</a>' + 
+                                       
+                                       '<fieldset class="advanced">' + 
+                                               '<legend>' + _e("Advanced") + '</legend>' + 
+                                               
+                                               '<label for="lresource">' + _e("Resource") + '</label>' + 
+                                               '<input type="text" class="resource" id="lresource" value="' + JAPPIX_RESOURCE + '" />' + 
+                                               '<label for="lpriority">' + _e("Priority") + '</label>' + 
+                                               '<select class="priority" id="lpriority">' + 
+                                                       '<option value="1">' + _e("Low") + '</option>' + 
+                                                       '<option value="10" selected="">' + _e("Medium") + '</option>' + 
+                                                       '<option value="100">' + _e("High") + '</option>' + 
+                                               '</select>' + 
+                                       '</fieldset>' + 
+                                       
+                                       '<input type="submit" value="' + _e("Here we go!") + '" />' + 
+                               '</form>';
+                       
+                       break;
+               
+               // Anonymous login tool
+               case 'anonymouser':
+                       disable_form = disableInput(ANONYMOUS, 'off');
+                       code = '<p>' + printf(_e("Enter the groupchat you want to join and the nick you want to have. You can also go back to the %s."), '<a href="#" class="to-home">' + _e("login page") + '</a>') + '</p>' + 
+                               
+                               '<form action="#" method="post">' + 
+                                       '<fieldset>' + 
+                                               '<legend>' + _e("Required") + '</legend>' + 
+                                               
+                                               '<label>' + _e("Room") + '</label>' + 
+                                               '<input type="text" class="room"' + disable_form + ' pattern="[^/]+" required="" />' + 
+                                               
+                                               '<label>' + _e("Nickname") + '</label>' + 
+                                               '<input type="text" class="nick"' + disable_form + ' required="" />' + 
+                                       '</fieldset>' + 
+                                       
+                                       '<input type="submit" value="' + _e("Here we go!") + '"' + disable_form + ' />' + 
+                               '</form>' + 
+                               
+                               '<div class="info report">' + 
+                                       _e("Share this link with your friends:") + ' <span></span>' + 
+                               '</div>';
+                       
+                       break;
+               
+               // Register tool
+               case 'registerer':
+                       disable_form = disableInput(REGISTRATION, 'off');
+                       
+                       if(!disable_form)
+                               lock_host = disableInput(LOCK_HOST, 'on');
+                       
+                       code = '<p>' + _e("Register a new XMPP account to join your friends on your own social cloud. That's simple!") + '</p>' + 
+                               
+                               '<form action="#" method="post">' + 
+                                       '<fieldset>' + 
+                                               '<legend>' + _e("Required") + '</legend>' + 
+                                               
+                                               '<label for="rnick">' + _e("Address") + '</label>' + 
+                                               '<input type="text" class="nick" id="rnick" ' + disable_form + ' pattern="[^@/]+" required="" /><span class="jid">@</span><input type="text" class="server" id="rserver" value="' + HOST_MAIN + '" ' + disable_form + lock_host + ' pattern="[^@/]+" required="" />' + 
+                                               '<label for="rpassword">' + _e("Password") + '</label>' + 
+                                               '<input type="password" class="password" id="rpassword" ' + disable_form + ' required="" />' + 
+                                               '<label for="spassword">' + _e("Confirm") + '</label><input type="password" class="spassword" id="spassword" ' + disable_form + ' required="" />' + 
+                                       '</fieldset>' + 
+                                       
+                                       '<input type="submit" value="' + _e("Here we go!") + '" ' + disable_form + '/>' + 
+                               '</form>';
+                       
+                       break;
+       }
+       
+       // Form disabled?
+       if(disable_form)
+               code += '<div class="info fail">' + 
+                               _e("This tool has been disabled, you cannot use it!") + 
+                       '</div>';
+       
+       // Create this HTML code
+       if(code && !exists(current)) {
+               // Append it!
+               $(right + '.homediv.default').after('<div class="' + div + ' homediv">' + code + '</div>');
+               
+               // Create the attached events
+               switch(div) {
+                       // Login tool
+                       case 'loginer':
+                               $(current + ' a.to-anonymous').click(function() {
+                                       return switchHome('anonymouser');
+                               });
+                               
+                               $(current + ' a.advanced').click(showAdvanced);
+                               
+                               $(current + ' form').submit(loginForm);
+                               
+                               break;
+                       
+                       // Anonymous login tool
+                       case 'anonymouser':
+                               $(current + ' a.to-home').click(function() {
+                                       return switchHome('loginer');
+                               });
+                               
+                               $(current + ' form').submit(doAnonymous);
+                               
+                               // Keyup event on anonymous join's room input
+                               $(current + ' input.room').keyup(function() {
+                                       var value = $(this).val();
+                                       var report = current + ' .report';
+                                       var span = report + ' span';
+                                       
+                                       if(!value) {
+                                               $(report).hide();
+                                               $(span).text('');
+                                       }
+                                       
+                                       else {
+                                               $(report).show();
+                                               $(span).text(JAPPIX_LOCATION + '?r=' + value);
+                                       }
+                               });
+                               
+                               break;
+                       
+                       // Register tool
+                       case 'registerer':
+                               $(current + ' form').submit(registerForm);
+                               
+                               break;
+               }
+       }
+       
+       // We focus on the first input
+       $(document).oneTime(10, function() {
+               $(right + 'input:visible:first').focus();
+       });
+       
+       return false;
+}
+
+// Allows the user to display the advanced login options
+function showAdvanced() {
+       // Hide the link
+       $('#home a.advanced').hide();
+       
+       // Show the fieldset
+       $('#home fieldset.advanced').show();
+       
+       return false;
+}
+
+// Reads the login form values
+function loginForm() {
+       // We get the values
+       var lPath = '#home .loginer ';
+       var lServer = $(lPath + '.server').val();
+       var lNick = $(lPath + '.nick').val();
+       var lPass = $(lPath + '.password').val();
+       var lResource = $(lPath + '.resource').val();
+       var lPriority = $(lPath + '.priority').val();
+       var lRemember = $(lPath + '.remember').filter(':checked').size();
+       
+       // Enough values?
+       if(lServer && lNick && lPass && lResource && lPriority)
+               doLogin(lNick, lServer, lPass, lResource, lPriority, lRemember);
+       
+       // Something is missing?
+       else {
+               $(lPath + 'input[type=text], ' + lPath + 'input[type=password]').each(function() {
+                       var select = $(this);
+                       
+                       if(!select.val())
+                               $(document).oneTime(10, function() {
+                                       select.addClass('please-complete').focus();
+                               });
+                       else
+                               select.removeClass('please-complete');  
+               });
+       }
+       
+       return false;
+}
+
+// Reads the register form values
+function registerForm() {
+       var rPath = '#home .registerer ';
+       
+       // Remove the success info
+       $(rPath + '.success').remove();
+       
+       // Get the values
+       var username = $(rPath + '.nick').val();
+       var domain = $(rPath + '.server').val();
+       var pass = $(rPath + '.password').val();
+       var spass = $(rPath + '.spassword').val();
+       
+       // Enough values?
+       if(domain && username && pass && spass && (pass == spass)) {
+               // We remove the not completed class to avoid problems
+               $('#home .registerer input').removeClass('please-complete');
+               
+               // Fire the register event!
+               doRegister(username, domain, pass);
+       }
+       
+       // Something is missing?
+       else {
+               $(rPath + 'input[type=text], ' + rPath + 'input[type=password]').each(function() {
+                       var select = $(this);
+                       
+                       if(!select.val() || (select.is('#spassword') && pass && (pass != spass)))
+                               $(document).oneTime(10, function() {
+                                       select.addClass('please-complete').focus();
+                               });
+                       else
+                               select.removeClass('please-complete');  
+               });
+       }
+       
+       return false;
+}
+
+// Plugin launcher
+function launchHome() {
+       // Define the vars
+       var home = '#home ';
+       var button = home + 'button';
+       var corp = home + '.corporation';
+       var locale = home + '.locale';
+       
+       // Removes the <noscript /> elements to lighten the DOM
+       $('noscript').remove();
+       
+       // Allows the user to switch the home page
+       $(button).click(function() {
+               // Login button
+               if($(this).is('.login'))
+                       return switchHome('loginer');
+               
+               // Register button
+               else
+                       return switchHome('registerer');
+       });
+       
+       // Allows the user to view the corporation infobox
+       $(corp).hover(function() {
+               $(corp).addClass('hovered');
+       }, function() {
+               $(corp).removeClass('hovered');
+       });
+       
+       // Allows the user to switch the language
+       $(locale).hover(function() {
+               // Initialize the HTML code
+               var keepget = $(locale).attr('data-keepget');
+               var html = '<div class="list">';
+               
+               // Generate each locale HTML code
+               for(i in LOCALES_AVAILABLE_ID)
+                       html += '<a href="./?l=' + LOCALES_AVAILABLE_ID[i] + keepget + '">' + LOCALES_AVAILABLE_NAMES[i].htmlEnc() + '</a>';
+               
+               html += '</div>';
+               
+               // Append the HTML code
+               $(locale).append(html);
+       }, function() {
+               $(locale + ' .list').remove();
+       });
+       
+       // Disables the browser HTTP-requests stopper
+       $(document).keydown(function(e) {
+               if((e.keyCode == 27) && !isDeveloper())
+                       return false;
+       });
+       
+       // Warns for an obsolete browser
+       if(isObsolete()) {
+               // Add the code
+               $(locale).after(
+                       '<div class="obsolete">' + 
+                               '<p>' + _e("Your browser is out of date!") + '</p>' + 
+                               
+                               '<a class="firefox browsers-images" title="' + printf(_e("Last %s version is better!"), 'Mozilla Firefox') + '" href="http://www.mozilla.com/firefox/"></a>' + 
+                               '<a class="chrome browsers-images" title="' + printf(_e("Last %s version is better!"), 'Google Chrome') + '" href="http://www.google.com/chrome"></a>' + 
+                               '<a class="safari browsers-images" title="' + printf(_e("Last %s version is better!"), 'Safari') + '" href="http://www.apple.com/safari/"></a>' + 
+                               '<a class="opera browsers-images" title="' + printf(_e("Last %s version is better!"), 'Opera') + '" href="http://www.opera.com/"></a>' + 
+                               '<a class="ie browsers-images" title="' + printf(_e("Last %s version is better!"), 'Internet Explorer') + '" href="http://www.microsoft.com/hk/windows/internet-explorer/"></a>' + 
+                       '</div>'
+               );
+               
+               // Display it later
+               $(home + '.obsolete').oneTime('1s', function() {
+                       $(this).slideDown();
+               });
+               
+               logThis('Jappix does not support this browser!', 2);
+       }
+       
+       logThis('Welcome to Jappix! Happy coding in developer mode!');
+}
+
+// Launch this plugin!
+$(document).ready(launchHome);