diff -r 58bc29c14a4d -r 82bbfe3dc8a0 includes/clientside/static/ajax.js --- a/includes/clientside/static/ajax.js Wed Mar 18 11:35:28 2009 -0400 +++ b/includes/clientside/static/ajax.js Fri Mar 20 09:13:17 2009 -0400 @@ -155,7 +155,6 @@ return false; var input = obj.getElementsByTagName('input')[0]; - console.debug(obj, input); if ( !input ) return false; var newname = input.value; @@ -738,142 +737,170 @@ // IE <6 pseudo-compatibility if ( KILL_SWITCH ) return true; - load_component(['l10n', 'messagebox', 'flyin', 'fadefilter']); + load_component(['l10n', 'fadefilter', 'jquery', 'jquery-ui']); + + // force string fetch + $lang.get('etc_cancel'); + + // preload some images + var i1 = new Image(); + i1.src = cdnPath + '/images/loading-big.gif'; + var i2 = new Image(); + i2.src = cdnPath + '/images/check-large.png'; + + darken(true, 70, 'theme-selector-shade'); + + $('body').append('
'); + $('#theme-selector-wrapper') + .css('top', String(getScrollOffset()) + 'px') + .css('z-index', String( getHighestZ() + 20 )); - var inner_html = ''; - inner_html += '

'; - var chtheme_mb = new MessageBox(MB_OKCANCEL|MB_ICONQUESTION, $lang.get('ajax_changestyle_title'), inner_html); - chtheme_mb.onbeforeclick['OK'] = ajaxChangeStyleComplete; + $.get(stdAjaxPrefix + '&_mode=theme_list', {}, function(data, status) + { + $('#theme-selector-inner .theme-selector-spinner').fadeOut(650); + $('#theme-selector-body').animate({ width: 708 }, 600, function() + { + // avoiding jQuery's fade functions because they insist on toggling display as well + changeOpac(0, 'theme-selector-inner'); + $('#theme-selector-inner').html('

'); + $('#theme-selector-inner > h3').text($lang.get('ajax_thmsel_lbl_choosetheme')); + $('#theme-selector-inner').append(''); + for ( var i = 0; i < data.length; i++ ) + { + var bgi = data[i].have_thumb ? cdnPath + '/themes/' + data[i].theme_id + '/preview.png' : cdnPath + '/images/themepreview.png'; + $('#theme-selector-inner > ul').append('
  • '); + $('#theme-selector-inner li#theme_' + i + ' > a') + .css('background-image', 'url(' + bgi + ')') + .attr('enano:theme_id', data[i].theme_id); + $('#theme-selector-inner li#theme_' + i + ' > a > span') + .text(data[i].theme_name); + } + $('#theme-selector-inner').append(''); + $('#theme-selector-inner').append('
    ' + $lang.get('etc_cancel') + '
    '); + + $('#theme-selector-body').animate({ height: $('#theme-selector-inner').height() + 30 }, 600, function() + { + opacity('theme-selector-inner', 0, 100, 750); + }); + + $('#theme-selector-inner li a').click(function() + { + var theme_id = $(this).attr('enano:theme_id'); + $('span', this).html(' ').addClass('loading').fadeTo('fast', 0.6) + $.get(stdAjaxPrefix + '&_mode=get_styles', { theme_id: theme_id }, function(data, status) + { + if ( data.length > 1 ) + { + $('#theme-selector-inner').css('height', $('#theme-selector-inner').height()).fadeOut(600, function() + { + var div = document.createElement('div'); + domObjChangeOpac(0, div); + + $(div).attr('id', 'theme-selector-style-list').append('

    '); + $('h3', div).text($lang.get('ajax_thmsel_lbl_choosestyle')); + + for ( var i = 0; i < data.length; i++ ) + { + $(div).append('' + themeid_to_title(data[i]) + ''); + } + + $(div).append('
    ' + $lang.get('etc_cancel') + '
    '); + + changeOpac(0, 'theme-selector-style-list'); + $(this).html(div).show(); + + $('#theme-selector-body').animate({width: 300, height: $('#theme-selector-style-list').height() + 30}, 300, function() + { + opacity('theme-selector-style-list', 0, 100, 500); + }); + + $('.stylebtn').click(function() + { + ajaxChangeThemeSetLoading(); + $.post(stdAjaxPrefix + '&_mode=change_theme', { theme_id: theme_id, style_id: $(this).attr('enano:style_id') }, function(data, status) + { + if ( data.error ) + { + alert(data.error); + ajaxChangeStyleClose(); + return false; + } + ajaxChangeThemeShowSuccess(); + }, 2000); + + return false; + }); + }); + } + else + { + if ( !data[0] ) + { + alert('Didn\'t find any CSS files. :-/'); + ajaxChangeStyleClose(); + } + + $.post(stdAjaxPrefix + '&_mode=change_theme', { theme_id: theme_id, style_id: data[0] }, function(data, status) + { + if ( data.error ) + { + alert(data.error); + ajaxChangeStyleClose(); + return false; + } + ajaxChangeThemeShowSuccess(); + }, 'json'); + } + }, 'json'); + return false; + }); // click function + }); // animate + }, 'json'); // get } -window.ajaxGetStyles = function(id) +window.ajaxChangeThemeSetLoading = function() { - // IE <6 pseudo-compatibility - if ( KILL_SWITCH ) - return true; - var thediv = document.getElementById('chtheme_sel_style_parent'); - if ( thediv ) - { - thediv.parentNode.removeChild(thediv); - } - if ( id == '_blank' ) - { - return null; - } - ajaxGet(stdAjaxPrefix + '&_mode=getstyles&id=' + id, function(ajax) { - if ( ajax.readyState == 4 && ajax.status == 200 ) + $('#theme-selector-body').animate({width: 130, height: 130}); + $('#theme-selector-inner').empty().html('
    '); +} + +window.ajaxChangeThemeShowSuccess = function() +{ + $('#theme-selector-body').animate({width: 400, height: 300 }, 600, function() { - // IE doesn't like substr() on ajax.responseText - var response = String(ajax.responseText + ''); - if ( response.substr(0,1) != '[' ) - { - alert('Invalid or unexpected JSON response from server:\n' + response); - return null; - } - - // Build a selector and matching label - var data = parseJSON(response); - var options = new Array(); - for( var i in data ) - { - var item = data[i]; - var title = themeid_to_title(item); - var option = document.createElement('option'); - option.value = item; - option.appendChild(document.createTextNode(title)); - options.push(option); - } - var p_parent = document.createElement('p'); - var label = document.createElement('label'); - p_parent.id = 'chtheme_sel_style_parent'; - label.appendChild(document.createTextNode($lang.get('ajax_changestyle_lbl_style') + ' ')); - var select = document.createElement('select'); - select.id = 'chtheme_sel_style'; - for ( var i in options ) - { - select.appendChild(options[i]); - } - label.appendChild(select); - p_parent.appendChild(label); - - // Stick it onto the messagebox - var div = document.getElementById('messageBox'); - var kid = div.firstChild.nextSibling; - - kid.appendChild(p_parent); - - } - }, true); + $('#theme-selector-inner').append(' '); + $('#theme-selector-inner').append('

    ' + $lang.get('ajax_thmsel_msg_success') + '

    '); + $('#theme-selector-inner').append('
    ' + $lang.get('ajax_thmsel_btn_reload') + '
    '); + $('#theme-selector-inner').append('
    ' + $lang.get('ajax_thmsel_btn_close') + '
    ' + $lang.get('ajax_thmsel_btn_close_hint') + '
    '); + $('#theme-selector-inner').fadeIn(); + }); + setTimeout(function() + { + $('#theme-selector-inner').empty(); + }, 10); } -window.ajaxChangeStyleComplete = function() +window.ajaxChangeStyleClose = function() { - // IE <6 pseudo-compatibility - if ( KILL_SWITCH ) - return true; - var theme = $dynano('chtheme_sel_theme'); - var style = $dynano('chtheme_sel_style'); - if ( !theme.object || !style.object ) - { - alert($lang.get('ajax_changestyle_pleaseselect_theme')); - return true; - } - var theme_id = theme.object.value; - var style_id = style.object.value; - - if ( typeof(theme_id) != 'string' || typeof(style_id) != 'string' ) - { - alert('Couldn\'t get theme or style ID'); - return true; - } - - if ( theme_id.length < 1 || style_id.length < 1 ) - { - alert('Theme or style ID is zero length'); - return true; - } - - ajaxPost(stdAjaxPrefix + '&_mode=change_theme', 'theme_id=' + ajaxEscape(theme_id) + '&style_id=' + ajaxEscape(style_id), function(ajax) + setTimeout(function() { - if ( ajax.readyState == 4 && ajax.status == 200 ) - { - if ( ajax.responseText == 'GOOD' ) + enlighten(false, 'theme-selector-shade'); + $('#theme-selector-wrapper').fadeOut(500, function() { - var c = confirm($lang.get('ajax_changestyle_success')); - if ( c ) - window.location.reload(); - } - else - { - alert('Error occurred during attempt to change theme:\n' + ajax.responseText); - } - } - }, true); - - return false; - + $(this).remove(); + }); + }, 300); + opacity('theme-selector-inner', 100, 0, 250); } -window.ajaxSwapCSS = function() +function themeid_to_title(id) { - // IE <6 pseudo-compatibility - if ( KILL_SWITCH ) - return true; - setAjaxLoading(); - if(_css) { - document.getElementById('mdgCss').href = main_css; - _css = false; - } else { - document.getElementById('mdgCss').href = print_css; - _css = true; - } - unsetAjaxLoading(); - menuOff(); + if ( typeof(id) != 'string' ) + return false; + id = id.substr(0, 1).toUpperCase() + id.substr(1); + id = id.replace(/_/g, ' '); + id = id.replace(/-/g, ' '); + return id; } window.ajaxSetPassword = function() @@ -1565,12 +1592,3 @@ }); } -function themeid_to_title(id) -{ - if ( typeof(id) != 'string' ) - return false; - id = id.substr(0, 1).toUpperCase() + id.substr(1); - id = id.replace(/_/g, ' '); - id = id.replace(/-/g, ' '); - return id; -}