PBWOPortlets.m


max21 Unternehmensgruppe
#import "Aprica.h"
//	Aprica2
//	copyright Pirmin Braun 1997-2007 - pirmin@pirmin.de
//	all Rights reserved;
// hier kommen self-contained portlets rein
// diese finden ihr htmlwod ueber den portletName
@implementation PBWOPortlet
ACCESSClassm(templ,setTempl,WOElement)
ACCESSm(portletName,setPortletName)
- (NSMutableDictionary *)parmDict;
{
    return parmDict;
}
- (BOOL)synchronizesVariablesWithBindings
{
    return NO;
}
- (PBWOPortlet *)datasource;
{
    return self;
}
- currentItem;
{
    return currentItem;
}
- (NSMutableArray *)ma;
{
    return ma;
}
- init;
{
    if(!(self = [super init]))return nil;
    MA(ma);
    MD(parmDict);
    firstAwake = YES;
    return self;
}
- (void)awake;
{
    [super awake];
    if(firstAwake){
        NSString *registerFor = [self valueForBinding:@"registerFor"];
        firstAwake = NO;
        [[(PBWOEditor *)[self parent]portletDict] setObject:self forKey:[[(PBWOEditor *)[self parent]currentAsso]guiName]];
        [self setPortletName:[self valueForBinding:@"portletName"]]; // nur hier ist currentAsso richtig gesetzt
        if([registerFor iE:@"clear"]){
            [[(PBWOEditor *)[self parent] clearOnSelObjChanged]addObject:self];
        }
        if([registerFor iE:@"refresh"]){
            [[(PBWOEditor *)[self parent] refreshOnSelObjChanged]addObject:self];
        }
        [self refresh];
    }
}
- (void)bringToFront:(PBWOEditor *)e;
{
// das geht seltsamerweise nicht:    [[_APP currentComponent] bringToFront:e];
    [(PBWOEditor *)[self parent] bringToFront:e];
}
- (void)currentLineActed;
{
// per default kuemmert sich ein script drum; kann aber ueberschrieben werden;
    [_APP executeScriptNamed:[portletName sbas:@"_action"] datasource:(PBWOEditor *)self parmDict:parmDict];
}
- (void)currentLine1Acted;
{
// gleich wie currentLineActed
    [self currentLineActed];
}
- (void)currentLine2Acted;
{
// per default kuemmert sich ein script drum; kann aber ueberschrieben werden;
    [_APP executeScriptNamed:[portletName sbas:@"2_action"] datasource:(PBWOEditor *)self parmDict:parmDict];
}
- (void)currentLine3Acted;
{
// per default kuemmert sich ein script drum; kann aber ueberschrieben werden;
    [_APP executeScriptNamed:[portletName sbas:@"3_action"] datasource:(PBWOEditor *)self parmDict:parmDict];
}
- (void)currentLine4Acted;
{
// per default kuemmert sich ein script drum; kann aber ueberschrieben werden;
    [_APP executeScriptNamed:[portletName sbas:@"4_action"] datasource:(PBWOEditor *)self parmDict:parmDict];
}
- (void)currentLine5Acted;
{
// per default kuemmert sich ein script drum; kann aber ueberschrieben werden;
    [_APP executeScriptNamed:[portletName sbas:@"5_action"] datasource:(PBWOEditor *)self parmDict:parmDict];
}
- (void)currentLine6Acted;
{
// per default kuemmert sich ein script drum; kann aber ueberschrieben werden;
    [_APP executeScriptNamed:[portletName sbas:@"6_action"] datasource:(PBWOEditor *)self parmDict:parmDict];
}
- (void)refresh;
{
// per default kuemmert sich ein script drum; kann aber ueberschrieben werden;
    [_APP executeScriptNamed:portletName  datasource:(PBWOEditor *)self parmDict:parmDict];
}
- (void)clear;
{
    [ma removeAllObjects];
}
- (WOElement *)_template;
{
//wird erst in appendToResponse aufgerufen;
    if(!templ){
        [self setTempl:[_APP getTemplateForName:portletName]];
        if(!templ){
            LOGS(([NSSWF @"html f. Portlet %@ konnte nicht erstellt werden",portletName]));
            return nil;
        }
        [self tvfk(templ,@"_template")];
    }
    return templ;
}
- (void)dealloc;
{
    [templ release];
    [portletName release];
    [ma release];
    [parmDict release];
    [super dealloc];
}
@end
// WebObjects ist so bloed; geht immer auf den Klassennamen einer WOComponent, um deren Instanzvariablen-Inhalt zu finden; _name oder _templateName werden ignoriert; hat man in mehreren Registern Portlets, so erscheinen die Portlets des ersten Registers anstelle derer in den Folgeregistern; html-Cacheing abzuschalten, hilft auch nix;
// mit unterschiedlichen Klassennamen funktionierts; Limit auf diese Weise 20 Portlets pro Modul;
@interface PBWOPortlet0A : PBWOPortlet {} @end @implementation PBWOPortlet0A : PBWOPortlet @end
@interface PBWOPortlet1A : PBWOPortlet {} @end @implementation PBWOPortlet1A : PBWOPortlet @end
@interface PBWOPortlet2A : PBWOPortlet {} @end @implementation PBWOPortlet2A : PBWOPortlet @end
@interface PBWOPortlet3A : PBWOPortlet {} @end @implementation PBWOPortlet3A : PBWOPortlet @end
@interface PBWOPortlet4A : PBWOPortlet {} @end @implementation PBWOPortlet4A : PBWOPortlet @end
@interface PBWOPortlet5A : PBWOPortlet {} @end @implementation PBWOPortlet5A : PBWOPortlet @end
@interface PBWOPortlet6A : PBWOPortlet {} @end @implementation PBWOPortlet6A : PBWOPortlet @end
@interface PBWOPortlet7A : PBWOPortlet {} @end @implementation PBWOPortlet7A : PBWOPortlet @end
@interface PBWOPortlet8A : PBWOPortlet {} @end @implementation PBWOPortlet8A : PBWOPortlet @end
@interface PBWOPortlet9A : PBWOPortlet {} @end @implementation PBWOPortlet9A : PBWOPortlet @end
@interface PBWOPortlet10A : PBWOPortlet {} @end @implementation PBWOPortlet10A : PBWOPortlet @end
@interface PBWOPortlet11A : PBWOPortlet {} @end @implementation PBWOPortlet11A : PBWOPortlet @end
@interface PBWOPortlet12A : PBWOPortlet {} @end @implementation PBWOPortlet12A : PBWOPortlet @end
@interface PBWOPortlet13A : PBWOPortlet {} @end @implementation PBWOPortlet13A : PBWOPortlet @end
@interface PBWOPortlet14A : PBWOPortlet {} @end @implementation PBWOPortlet14A : PBWOPortlet @end
@interface PBWOPortlet15A : PBWOPortlet {} @end @implementation PBWOPortlet15A : PBWOPortlet @end
@interface PBWOPortlet16A : PBWOPortlet {} @end @implementation PBWOPortlet16A : PBWOPortlet @end
@interface PBWOPortlet17A : PBWOPortlet {} @end @implementation PBWOPortlet17A : PBWOPortlet @end
@interface PBWOPortlet18A : PBWOPortlet {} @end @implementation PBWOPortlet18A : PBWOPortlet @end
@interface PBWOPortlet19A : PBWOPortlet {} @end @implementation PBWOPortlet19A : PBWOPortlet @end
@interface PBWOPortlet20A : PBWOPortlet {} @end @implementation PBWOPortlet20A : PBWOPortlet @end
@interface PBWOPortlet21A : PBWOPortlet {} @end @implementation PBWOPortlet21A : PBWOPortlet @end
@interface PBWOPortlet22A : PBWOPortlet {} @end @implementation PBWOPortlet22A : PBWOPortlet @end
@interface PBWOPortlet23A : PBWOPortlet {} @end @implementation PBWOPortlet23A : PBWOPortlet @end
@interface PBWOPortlet24A : PBWOPortlet {} @end @implementation PBWOPortlet24A : PBWOPortlet @end
@interface PBWOPortlet25A : PBWOPortlet {} @end @implementation PBWOPortlet25A : PBWOPortlet @end
@interface PBWOPortlet26A : PBWOPortlet {} @end @implementation PBWOPortlet26A : PBWOPortlet @end
@interface PBWOPortlet27A : PBWOPortlet {} @end @implementation PBWOPortlet27A : PBWOPortlet @end
@interface PBWOPortlet28A : PBWOPortlet {} @end @implementation PBWOPortlet28A : PBWOPortlet @end
@interface PBWOPortlet29A : PBWOPortlet {} @end @implementation PBWOPortlet29A : PBWOPortlet @end
@interface PBWOPortlet30A : PBWOPortlet {} @end @implementation PBWOPortlet30A : PBWOPortlet @end
@interface PBWOPortlet31A : PBWOPortlet {} @end @implementation PBWOPortlet31A : PBWOPortlet @end
@interface PBWOPortlet32A : PBWOPortlet {} @end @implementation PBWOPortlet32A : PBWOPortlet @end
@interface PBWOPortlet33A : PBWOPortlet {} @end @implementation PBWOPortlet33A : PBWOPortlet @end
@interface PBWOPortlet34A : PBWOPortlet {} @end @implementation PBWOPortlet34A : PBWOPortlet @end
@interface PBWOPortlet35A : PBWOPortlet {} @end @implementation PBWOPortlet35A : PBWOPortlet @end
@interface PBWOPortlet36A : PBWOPortlet {} @end @implementation PBWOPortlet36A : PBWOPortlet @end
@interface PBWOPortlet37A : PBWOPortlet {} @end @implementation PBWOPortlet37A : PBWOPortlet @end
@interface PBWOPortlet38A : PBWOPortlet {} @end @implementation PBWOPortlet38A : PBWOPortlet @end
@interface PBWOPortlet39A : PBWOPortlet {} @end @implementation PBWOPortlet39A : PBWOPortlet @end
@interface PBWOPortlet40A : PBWOPortlet {} @end @implementation PBWOPortlet40A : PBWOPortlet @end
@interface PBWOPortlet41A : PBWOPortlet {} @end @implementation PBWOPortlet41A : PBWOPortlet @end
@interface PBWOPortlet42A : PBWOPortlet {} @end @implementation PBWOPortlet42A : PBWOPortlet @end
@interface PBWOPortlet43A : PBWOPortlet {} @end @implementation PBWOPortlet43A : PBWOPortlet @end
@interface PBWOPortlet44A : PBWOPortlet {} @end @implementation PBWOPortlet44A : PBWOPortlet @end
@interface PBWOPortlet45A : PBWOPortlet {} @end @implementation PBWOPortlet45A : PBWOPortlet @end
@interface PBWOPortlet46A : PBWOPortlet {} @end @implementation PBWOPortlet46A : PBWOPortlet @end
@implementation PortletTempRoot : PBWOPortlet
- (void)currentLine2Acted;
{
    [_SESSION setIsTemporaryRoot:NO];
    [self setTempRootPW:@""];
    [self setTempRootMeldung:TRANSLATION(@"Bitte Passwort eingeben")];
}
- init;
{
    if(!(self = [super init]))return nil;
    [self currentLine2Acted];
    return self;
}
- (void)currentLine1Acted;
{
    PBEO *root;
    NSString *s;
    if(!FILLED(tempRootPW)){
        [self setTempRootMeldung:TRANSLATION(@"Bitte Passwort eingeben.")];
        return;
    }
    root = getEOPkValue(@"vid_benutzer",@"Administrator");
    s = [root vfk:@"cryptedpw"];
    if(![singleValueSQL(([NSSWF @"select md5('%@')",tempRootPW])) iE:s]){
        [self setTempRootMeldung:TRANSLATION(@"Passwort ungueltig.")];
        [self setTempRootPW:@""];
        return;
    }
    [self setTempRootPW:@""];
    [_SESSION setIsTemporaryRoot:YES];
    [self setTempRootMeldung:TRANSLATION(@"Root aktiv")];
    [root tvfk([_APP now],@"lastlogin")];
    [root tvfk(NSS(0),@"pwfailcount")]; //erfolgreich angemeldet: failcount ruecksetzen
    [root tvfk(NSS(([[root vfk:@"logins"]intValue]+1)),@"logins")];
    UPDAT(root);
}
ACCESSm(tempRootPW,setTempRootPW)
ACCESSm(tempRootMeldung,setTempRootMeldung)
- (void)dealloc;
{
    [tempRootPW release];
    [tempRootMeldung release];
    [super dealloc];
}
@end
Foto