for what its worth, these are some the handler functions I have created.
the logic is fine, but your suggestion is much less work, it seems,
and there are a few bugs which i commented out. there are other functions
which will utilize the current state of system panels, namely opening a
module
that is in a system panel that is not currently open, requires first
opening the panel via ajax.updater
i am not an expert in JS, its not very intuitive for me.
function get_system_states() {
var ref = document.getElementById('mb_system_state_references');
var systemz = [];
systemz = ref.innerHTML.split(":",33);
// innerHTML default state reference (U=Unopen, O=Open, M=Minimized) :>
//100=U:101=U:102=U:103=U:104=U:105=U:106=U:107=U:108=U:109=U:
//110=U:111=U:112=U:113=U:114=U:115=U:116=U:117=U:118=U:119=U:
//120=U:121=U:122=U:123=U:124=U:125=U:126=U:127=U:128=U:129=U:
//130=U:131=U:132=U
var mb_statez = [];
for(k=100;k<133;k++) {
var n = k-100; // system 100 should be index 0, system 132 should
be index 32
var sys_string = systemz[n];
var system_statez = sys_string.split("=",2);
var state = system_statez[1]; // index 0 should be the system
number, index 1 is the letter U, M or O
mb_statez[n] = state;
} // end loop
return mb_statez;
} // end function
function get_system_state(system_index) {
system_index+='';
var s = get_system_states();
var n = (parseInt(system_index)-100);
return s[n];
}
function set_system_state(system_index,new_state){
var s = []; s=get_system_states(); var n = 0;
system_index+=''; var new_ref_string="";
//alert('setting new system state: '+new_state);
for(k=100;k<133;k++) { n = k-100;
//if not the setting we are setting, write its current state
if ((system_index)==k.toString()) {
new_ref_string+=k+'='+new_state;
} else { // else, write the new one
new_ref_string+=k+'='+s[n];
} // end else
new_ref_string+=":";
} // end for loop
document.getElementById('mb_system_state_references').innerHTML=new_ref_string;
//alert('writing new innerHTML as: '+new_ref_string);
return false;
} // function
function minimize_mb_system(system_index) {
//if (get_system_state(system_index)=="M")
// {
system_index+='';
var sp_div_id = 'system'+system_index+'';
var min_div_id = 'system'+system_index+'_minimized';
Effect.SwitchOff(sp_div_id);
Effect.Appear(min_div_id);
set_system_state(system_index,"M");
return false;
// }
// else { var warning = "system display state is already minimized.
did not collapse."; return warning; }
}
function restore_mb_system(system_index) {
//if (get_system_state(system_index)=="O")
// {
system_index+='';
var sp_div_id = 'system'+system_index;
var min_div_id = 'system'+system_index+'_minimized';
Effect.Appear(''+sp_div_id+'');
Effect.SwitchOff(''+min_div_id+'');
set_system_state(system_index,"O");
return false;
// }
// else { var warning = "system display state is already open. did
not restore."; return warning; }
}
function open_mb_system(system_index) {
system_index+='';var k=0; var state = get_system_states();
// if system we are opening is minimized, restore it
var n = parseInt(system_index);
if (state[n]=="M") {
var restore = restore_mb_system(system_index);
if (restore!=false) { alert(restore); }
}
// for every other system taht might be open above it, minimize it
for(k=n-1;k>=0;k--){
if (k+''==system_index) { continue; }
if (state[k] == "O") {
var minimize = minimize_mb_system(k);
if (minimize!=false) { alert(minimize); }
}
} // end for loop
//preload module image rollovers for the system we are opening
MM_preloadImages('../../../img/mb_module/black/'+system_index+'_01_MO.jpg',
'../../../img/mb_module/black/'+system_index+'_02_MO.jpg',
'../../../img/mb_module/black/'+system_index+'_03_MO.jpg',
'../../../img/mb_module/black/'+system_index+'_04_MO.jpg',
'../../../img/mb_module/black/'+system_index+'_05_MO.jpg',
'../../../img/mb_module/black/'+system_index+'_06_MO.jpg',
'../../../img/mb_module/black/'+system_index+'_07_MO.jpg',
'../../../img/mb_module/black/'+system_index+'_08_MO.jpg');
// get the system HTML from the monkeypanel server
new Ajax.Updater({ success: 'system'+system_index+'_container',
failure: 'system'+system_index+'_messages' },
'../demo/system_panel/'+system_index+'',
{ method: 'get' , onComplete: function(){
Effect.Appear('system'+system_index+'');
Effect.Appear('system'+system_index+'_sysmenu_buttons');
display_mb_system_modules(system_index);
var monkeysays_sys_div =
'system'+system_index+'_monkeysays'+'';
new Effect.Appear(monkeysays_sys_div, { duration: 3.0 });
Effect.Fade(monkeysays_sys_div, { duration: 15.0 });
//Effect.Appear('system'+system_index+'monkeyerrors');
//Effect.Appear('system'+system_index+'_monkeytasks');
set_system_state(system_index,'O');
} });
return false;
}
function close_mb_system(system_index,from) {
var sp_div_id = 'system'+system_index+'';
var min_div_id = 'system'+system_index+'_minimized';
if (from==1) Effect.SwitchOff(sp_div_id);
if (from==2) Effect.SwitchOff(min_div_id);
set_system_state(system_index,"U");
}
--
You received this message because you are subscribed to the Google Groups
"Prototype & script.aculo.us" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/prototype-scriptaculous/-/VKx3SbSllDAJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/prototype-scriptaculous?hl=en.