#import "Aprica.h"
// Aprica2
// copyright Pirmin Braun 1997-2007 - pirmin@pirmin.de
// all Rights reserved;
// arbeitet auf Module in der DB
// dort haben alle nicht zugeordneten Module als super_menu "System" gesetzt.
@implementation Home2
ACCESSClassm(currentHelement,setCurrentHelement,PBEO);
ACCESSClassm(selectedHelement,setSelectedHelement,PBEO);
- init;
{ if(!(self = [super init]))return nil;
MA(visibleHelements);
soaForHelements = [[NSArray soaADFrom:@"pos:an,guiname"]retain];
return self;
}
- (void)didSetUpWithBundle;
{ [self rebuildHelements]; //lesen der ordner, anzahl ermitteln nur im speicher
[_APP executeScriptNamed:[NSSWF @"%@/didSetUpWithBundle",nameForScript] datasource:self parmDict:parmDict];
}
- (void)expandElement:(PBEO *)he;
{ int cheIndex;
LMA;
NSArray *a;
NSString *nesting = NSS([[he vfk:@"_nesting"]intValue]+1);
int i,j;
[he tvfk(@"N",@"_collapsed")];
a = getEOsQSoa(@"module",([PBSQLQualifier qualifierWithString:[NSSWF @"super_menu = '%@'",[he primaryKey]]]),soaForHelements);
for(i=0,j=[a count];i<j;i++){ PBEO *eo = [a oai:i];
[lma addObject:eo];
[eo tvfk(nesting,@"_nesting")];
[eo tvfk(@"J",@"_collapsed")];
}
cheIndex = [visibleHelements indexOfObject:he];
if(cheIndex == NSNotFound)cheIndex = [visibleHelements count]-1; //dann hinten anfuegen
[visibleHelements addObjects:lma afterIndex:cheIndex];
}
- (BOOL)isLeaf;
{ return [[currentHelement vfk:@"is_unter_menu"]iE:@"N"];
}
- (void)rebuildHelements;
{// nach setupwithbundle
// die top-Module-Ebene darstellen, auf erstes positionieren und auffalten
NSArray *a;
int i,j;
[visibleHelements removeAllObjects];
a = getEOsQf(@"module",@"is_unter_menu = 'J' and super_menu = ''");
if(![a count])return;
[visibleHelements addObjectsFromArray:a];
[visibleHelements sortUsingKeyOrderArray:soaForHelements];
for(i=0,j=[a count];i<j;i++){ PBEO *eo = [a oai:i];
[eo tvfk(@"J",@"_collapsed")];
[eo tvfk(@"0",@"_nesting")];
}
[self setSelectedHelement:[a firstObject]];
[self rebuildCurrentPath];
[self expandElement:selectedHelement];
}
- (WOElement *)currentHelementActed;
{// beim click auf einen Untermenu-Link: selektieren, Pfad neu aufbauen, erste Ebene darunter auffalten
// bei click auf modul: aufrufen
if([self isLeaf]){ PBWOEditor *e = MODUL([currentHelement vfk:@"name"]);
if(e){ [self bringToFrontWithInitialSearch:e];
}else{ LOGI(TRANSLATION(@"keine Berechtigung"));
}
}else{ [self setSelectedHelement:currentHelement];
[self rebuildCurrentPath];
if([self currentHelementIsCollapsed]){ [self expandElement:currentHelement];
}
}
return self;
}
- (void)removeChildrenOf:(PBEO *)he;
{ int i;
int cheIndex = [visibleHelements indexOfObject:he];
if(cheIndex == NSNotFound)return;
i = cheIndex + 1;
while(i < [visibleHelements count]){ PBEO *eo = [visibleHelements oai:i];
if([[eo vfk:@"super_menu"]iE:[he primaryKey]]){ [self removeChildrenOf:eo];
if(eo == selectedHelement){ [self setSelectedHelement:nil];
[self rebuildCurrentPath];
}
[visibleHelements removeObjectAtIndex:i];
}else{ return;
}
}
}
- (void)currentHelementClick;
{//klick auf den collapse/expand button: nur Hierarche auf/zufalten
if([self currentHelementIsCollapsed]){ [self expandElement:currentHelement];
}else{// alle Children rekursiv rausnehmen aus Array
[self removeChildrenOf:currentHelement];
[currentHelement tvfk(@"J",@"_collapsed")];
}
}
- (BOOL)isSelectedHelement;
{ return (currentHelement == selectedHelement);
}
- (NSString *)currentHelementClickSrc;
{ if([self currentHelementIsCollapsed]){ return [NSSWF @"/Aprica2_%@/Images/BuchZu.gif",[_APP mandant]];
}else{ return [NSSWF @"/Aprica2_%@/Images/BuchOffen.gif",[_APP mandant]];
}
}
- (NSString *)currentHelementClickAlt;
{ if([self currentHelementIsCollapsed]){ return TRANSLATION(@"aufklappen");
}else{ return TRANSLATION(@"zuklappen");
}
}
- (BOOL)currentHelementIsCollapsed;
{ return [[currentHelement vfk:@"_collapsed"]iE:@"J"];
}
- (void)rebuildCurrentPath;
{ [self didRebuildCurrentPath];
}
- (void)didRebuildCurrentPath;
{// hier den Inhalt aufblenden
}
- (void)dealloc;
{ [currentHelement release];
[selectedHelement release];
[soaForHelements release];
[visibleHelements release];
[super dealloc];
}
@end