Home2.m


max21 Unternehmensgruppe
#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
Foto