NetTalk Central

Author Topic: Changing theme has no effect (RESOLVED)  (Read 3820 times)

Poul Jensen

  • Full Member
  • ***
  • Posts: 241
    • View Profile
    • Email
Changing theme has no effect (RESOLVED)
« on: April 17, 2025, 02:27:20 AM »
In Webhandler - ParseRequestHeader I have:

Code: [Select]
GloTheme =  GETINI('KundeProg','Theme_' & p_web.GSV('CommandA') ,'redmond', clip(path()) & '\KundeProg.ini')
ds_outputdebugstring('In ParseRequestHeader - GloTheme: ' & GloTheme )

self.ChangeTheme( GloTheme )

but no change in theme is being done.
I have verified that the correct theme is picked from the ini-file.

Any hints?

tia
/Poul

« Last Edit: April 19, 2025, 03:46:55 AM by Poul Jensen »

Jane

  • Sr. Member
  • ****
  • Posts: 391
  • Expert on nothing with opinions on everything.
    • View Profile
    • Email
Re: Changing theme has no effect
« Reply #1 on: April 17, 2025, 10:53:23 AM »
Spelling counts.
Using exactly what you see in debugview, can you use that exact text value and change the theme from the URL?

i.e.

http://127.0.0.1:88/?_theme_=palmtree

Poul Jensen

  • Full Member
  • ***
  • Posts: 241
    • View Profile
    • Email
Re: Changing theme has no effect
« Reply #2 on: April 18, 2025, 12:25:22 AM »
My initial description is incomplete.
I actually read the individual users dataset and thus their selected theme in Webhandler - Processlink, and set the GloTheme accordingly.

But in Webhandler - ParseRequestHeader those variables are empty, no matter if I use
self.ChangeTheme( GloTheme )
or
self.ChangeTheme( p_web.GSV('theme') )

I am confused....

/Poul

Jane

  • Sr. Member
  • ****
  • Posts: 391
  • Expert on nothing with opinions on everything.
    • View Profile
    • Email
Re: Changing theme has no effect
« Reply #3 on: April 18, 2025, 08:52:47 AM »
Why don't you post the exact code you're trying to use?

What you just posted isn't consistent - if the variable is GloTheme then it should be p_web.GSV('GloTheme') rather than what you wrote.

And what does ParseRequestHeader have to do with getting a theme name from an INI file?

And you should only have to set the user's theme once for a session.  Are you really reading and setting that each time in ProcessLink?

On second thought, maybe worth asking for help on Bruce's Thursday webinar.

Poul Jensen

  • Full Member
  • ***
  • Posts: 241
    • View Profile
    • Email
Re: Changing theme has no effect
« Reply #4 on: April 18, 2025, 10:18:53 PM »
Hi Jane,

I really would like to set the theme as early as possible, and with static dataset this is easy.
As I understand it, with multiple datasets the Webhandler - Processlink is the best place to set the users dataset, and this works fine now.
And here I also read the user theme.
See the code below.

I will see if I can make it to the Thursday webinar.

Webhandler - Processlink:
Code: [Select]
    ds_outputdebugstring( 'Webhandler Processlink - p_web.GetValue(a) 1: ' & p_web.GetValue('a') )
    ds_outputdebugstring( 'Webhandler Processlink - p_web.GSV(CommandA) 1: ' & p_web.GSV('CommandA') )

   !ANY PARAMETER?   IF NOT DEFAULTS TO '1', BUT ONLY IF p_web.GSV('CommandA') IS NOT SET:
    IF p_web.GetValue('a') <> ''
        p_web.SetValue('CommandA', p_web.GetValue('a'))
        p_web.SSV('CommandA', p_web.GetValue('a'))
       
        !LOGS OUT
        p_web.SSV('Med_Init', '')
        p_web.SSV('Med_Navn', '')
        p_web.SSV('Med_Email', '')       
        p_web.SetSessionLoggedIn(0)
    ELSE
        IF p_web.GSV('CommandA') = '' 
            p_web.SetValue('CommandA','1')
            p_web.SSV('CommandA', '1')
        END   
    END

    ds_outputdebugstring( 'Webhandler Processlink - p_web.GSV(CommandA) 2: ' & p_web.GSV('CommandA') )

    !SETTING THE DATAPATH - A FOLDER OFF THE STATIC PATH IN GLO:StellarProgSti
    GLO:RegnskabsNummer =  p_web.GSV('CommandA')
    p_web.SSV('GLO:RegnskabsNummer', GLO:RegnskabsNummer)
    GLO:DataSti =  CLIP(GLO:StellarProgSti) & '\' & p_web.GSV('CommandA')
    p_web.SSV('GLO:DataSti', GLO:DataSti)   
    p_web.SSV('DataPath', p_web.GSV('GLO:DataSti'))
       
    ds_outputdebugstring('Webhandler Processlink - GLO:DataSti: ' & p_web.GSV('DataPath'))

    IF EXISTS( GLO:DataSti )       
        GLO:Inifil =  clip(GLO:DataSti) & '\MobilService.ini'
        p_web.SSV('GLO:Inifil', GLO:Inifil) 
       
        include('\pstellar_filename_defs_Slim.inc')    !THIS IS WHERE THE FILENAMES ARE BUILD
           
        !GETTING CUSTOMER NAME FROM INI
        g:KundeNavn =  GETINI('KundeProg','Kundenavn_' & p_web.GSV('CommandA') ,'' , clip(path()) & '\KundeProg.ini')
        IF CLIP(g:KundeNavn) = ''
            !GRABS DEFAULT:
            g:KundeNavn =  GETINI('KundeProg','Kundenavn' ,'' , clip(path()) & '\KundeProg.ini')
        END
        p_web.SSV('Kundenavn', g:KundeNavn)
       
        !GETTING THEME FROM INI
        GloTheme =  GETINI('KundeProg','Theme_' & p_web.GSV('CommandA') ,'redmond', clip(path()) & '\KundeProg.ini')   
        p_web.SSV('theme', GloTheme )
       
        ds_outputdebugstring('Webhandler Processlink - GloTheme: ' & CLIP(GloTheme))           
       
    ELSE
        p_web.showInfo('ERROR IN PARAMETER.....')
        ds_outputdebugstring('Webhandler Processlink  - Path does not exist: ' & CLIP(GLO:DataSti) )
       
        !AND SETS DEFAULT
        p_web.SSV('CommandA', '1')   
    END


Webhandler - ParseRequestHeader:
Code: [Select]
!CALLING ONE OR THE OTHER - BUT SINCE THEY ARE CLEARED, NO CHANGETHEME HAPPENS:

!ds_outputdebugstring('In ParseRequestHeader - p_web.GSV(theme): ' & p_web.GSV('CommandA') & ' - ' & p_web.GSV('theme') )
!IF CLIP(p_web.GSV('theme')) <> ''
!    self.ChangeTheme( p_web.GSV('theme') )
!END

ds_outputdebugstring('In ParseRequestHeader - GloTheme: ' & p_web.GSV('CommandA') & ' - ' & CLIP(GloTheme ))
IF CLIP(GloTheme) <> ''
    self.ChangeTheme( CLIP(GloTheme ))
END
« Last Edit: April 19, 2025, 12:59:24 AM by Poul Jensen »

Poul Jensen

  • Full Member
  • ***
  • Posts: 241
    • View Profile
    • Email
Re: Changing theme has no effect
« Reply #5 on: April 19, 2025, 01:32:57 AM »
I think I have a solution now  ;D

In Webhandler - ProcessLink this code:
Code: [Select]
   !ANY PARAMETER?   IF NOT DEFAULTS TO '1', BUT ONLY IF p_web.GSV('CommandA') IS NOT SET:
    p_web.SSV('ChangeTheme', '0')
    IF p_web.GetValue('a') <> ''
        p_web.SetValue('CommandA', p_web.GetValue('a'))
        p_web.SSV('CommandA', p_web.GetValue('a'))
       
        !LOGS OUT
        p_web.SSV('Med_Init', '')
        p_web.SSV('Med_Navn', '')
        p_web.SSV('Med_Email', '')       
        p_web.SetSessionLoggedIn(0)
        p_web.SSV('ChangeTheme','1')
    ELSE
        IF p_web.GSV('CommandA') = '' 
            p_web.SetValue('CommandA','1')
            p_web.SSV('CommandA', '1')
            p_web.SSV('ChangeTheme', '1')
        END   
    END

    ds_outputdebugstring( 'Webhandler Processlink - p_web.GSV(CommandA) 2: ' & p_web.GSV('CommandA') )

    !SETTING THE DATAPATH - A FOLDER OFF THE STATIC PATH IN GLO:StellarProgSti
    GLO:RegnskabsNummer =  p_web.GSV('CommandA')
    p_web.SSV('GLO:RegnskabsNummer', GLO:RegnskabsNummer)
    GLO:DataSti =  CLIP(GLO:StellarProgSti) & '\' & p_web.GSV('CommandA')
    p_web.SSV('GLO:DataSti', GLO:DataSti)   
    p_web.SSV('DataPath', p_web.GSV('GLO:DataSti'))
       
    ds_outputdebugstring('Webhandler Processlink - GLO:DataSti: ' & p_web.GSV('DataPath'))

    IF EXISTS( GLO:DataSti )       
        GLO:Inifil =  clip(GLO:DataSti) & '\MobilService.ini'
        p_web.SSV('GLO:Inifil', GLO:Inifil) 
       
        include('\pstellar_filename_defs_Slim.inc')    !THIS IS WHERE THE FILENAMES ARE BUILD
           
        !GETTING CUSTOMER NAME FROM INI
        g:KundeNavn =  GETINI('KundeProg','Kundenavn_' & p_web.GSV('CommandA') ,'' , clip(path()) & '\KundeProg.ini')
        IF CLIP(g:KundeNavn) = ''
            !GRABS DEFAUL:
            g:KundeNavn =  GETINI('KundeProg','Kundenavn' ,'' , clip(path()) & '\KundeProg.ini')
        END
        p_web.SSV('Kundenavn', g:KundeNavn)
       
        !GETTING THEME FROM INI
        GloTheme =  GETINI('KundeProg','Theme_' & p_web.GSV('CommandA') ,'redmond', clip(path()) & '\KundeProg.ini')   
        p_web.SSV('theme', GloTheme )
       
        ds_outputdebugstring('Webhandler Processlink - GloTheme: ' & CLIP(GloTheme))           
       
    ELSE
        p_web.showInfo('ERROR IN PARAMETER.....')
        ds_outputdebugstring('Webhandler Processlink  - Path does not exist: ' & CLIP(GLO:DataSti) )
       
        !AND SETS DEFAULT
        p_web.SSV('CommandA', '1')   
    END

and in PageHeaderTag - Processed Code this:
Code: [Select]
    IF p_web.GSV('ChangeTheme') = '1' AND p_web.GSV('theme') <> ''

        ds_outputdebugstring('In PageHeaderTag - p_web.GSV(theme): ' & p_web.GSV('CommandA') & ' - ' & p_web.GSV('theme') )
        p_web.ChangeTheme( p_web.GSV('theme') )
        p_web.SSV('ChangeTheme', '0')
           
    END


Jane

  • Sr. Member
  • ****
  • Posts: 391
  • Expert on nothing with opinions on everything.
    • View Profile
    • Email
Re: Changing theme has no effect (RESOLVED)
« Reply #6 on: April 19, 2025, 11:01:13 AM »
OK.

But with data tables, the threaded connection strings you use need to be set on each thread.  Hence the suggestion to set them in ProcessLink each time a thread runs.

My point was that once you set a theme, you do not need to set it again each thread.  It's sticky to the session, not to a thread. 

That said, the one time that you set the theme can be with the rest of the stuff you're doing in ProcessLink - no need to have separate code to do it in PageHeaderTag.
Set the theme once in ProcessLink, and set the threaded connection strings there each time.


Poul Jensen

  • Full Member
  • ***
  • Posts: 241
    • View Profile
    • Email
Re: Changing theme has no effect (RESOLVED)
« Reply #7 on: April 19, 2025, 10:02:47 PM »
OK.

But with data tables, the threaded connection strings you use need to be set on each thread.  Hence the suggestion to set them in ProcessLink each time a thread runs.

My point was that once you set a theme, you do not need to set it again each thread.  It's sticky to the session, not to a thread. 

That said, the one time that you set the theme can be with the rest of the stuff you're doing in ProcessLink - no need to have separate code to do it in PageHeaderTag.
Set the theme once in ProcessLink, and set the threaded connection strings there each time.

Noted.

Thanks for your comments.