Search in sources :

Example 1 with MTheme

use of org.compiere.model.MTheme in project adempiere by adempiere.

the class AdempiereWebUI method loginCompleted.

/* (non-Javadoc)
	 * @see org.adempiere.webui.IWebClient#loginCompleted()
	 */
public void loginCompleted() {
    Properties ctx = Env.getCtx();
    // to reload preferences when the user refresh the browser
    userPreference = loadUserPreference(Env.getAD_User_ID(ctx));
    // Set the theme according to the user preferences.  If the theme changes, the page will
    // be reloaded again - so do this first thing.
    int theme_id = userPreference.getPropertyAsInt(UserPreference.P_ZK_THEME_PREFERENCE);
    if (theme_id > 0) {
        // If theme_id == 0, don't bother setting a new MTheme. Just use the current theme.
        MTheme theme = MTheme.get(ctx, theme_id);
        if (ThemeUtils.makeCurrent(theme)) {
            // Make the theme active and reload the page.
            return;
        }
    }
    ThemeUtils.addBrowserIconAndTitle(this.getPage());
    if (loginDesktop != null) {
        loginDesktop.detach();
        loginDesktop = null;
    }
    String langLogin = Env.getContext(ctx, Env.LANGUAGE);
    if (langLogin == null || langLogin.length() <= 0) {
        langLogin = langSession;
        Env.setContext(ctx, Env.LANGUAGE, langSession);
    }
    // Validate language
    Language language = Language.getLanguage(langLogin);
    String locale = Env.getContext(ctx, AEnv.LOCALE);
    if (locale != null && locale.length() > 0 && !language.getLocale().toString().equals(locale)) {
        String adLanguage = language.getAD_Language();
        Language tmp = Language.getLanguage(locale);
        language = new Language(tmp.getName(), adLanguage, tmp.getLocale(), tmp.isDecimalPoint(), tmp.getDateFormat().toPattern(), tmp.getMediaSize());
    } else {
        Language tmp = language;
        language = new Language(tmp.getName(), tmp.getAD_Language(), tmp.getLocale(), tmp.isDecimalPoint(), tmp.getDateFormat().toPattern(), tmp.getMediaSize());
    }
    Env.verifyLanguage(ctx, language);
    //Bug
    Env.setContext(ctx, Env.LANGUAGE, language.getAD_Language());
    //	Create adempiere Session - user id in ctx
    Execution exec = Executions.getCurrent();
    Session currSess = exec.getDesktop().getSession();
    HttpSession httpSess = (HttpSession) currSess.getNativeSession();
    MSession mSession = MSession.get(ctx, exec.getRemoteAddr(), exec.getRemoteHost(), httpSess.getId());
    //enable full interface, relook into this when doing preference
    Env.setContext(ctx, "#ShowTrl", true);
    Env.setContext(ctx, "#ShowAcct", MRole.getDefault().isShowAcct());
    Env.setContext(ctx, "#ShowAdvanced", true);
    //auto commit user preference
    String autoCommit = userPreference.getProperty(UserPreference.P_AUTO_COMMIT);
    Env.setAutoCommit(ctx, "true".equalsIgnoreCase(autoCommit) || "y".equalsIgnoreCase(autoCommit));
    //auto new user preference
    String autoNew = userPreference.getProperty(UserPreference.P_AUTO_NEW);
    Env.setAutoNew(ctx, "true".equalsIgnoreCase(autoNew) || "y".equalsIgnoreCase(autoNew));
    IDesktop d = (IDesktop) currSess.getAttribute("application.desktop");
    if (d != null && d instanceof IDesktop) {
        ExecutionCarryOver eco = (ExecutionCarryOver) currSess.getAttribute(EXECUTION_CARRYOVER_SESSION_KEY);
        if (eco != null) {
            //try restore
            try {
                appDesktop = (IDesktop) d;
                ExecutionCarryOver current = new ExecutionCarryOver(this.getPage().getDesktop());
                ExecutionCtrl ctrl = ExecutionsCtrl.getCurrentCtrl();
                Visualizer vi = ctrl.getVisualizer();
                eco.carryOver();
                Collection<Component> rootComponents = new ArrayList<Component>();
                try {
                    ctrl = ExecutionsCtrl.getCurrentCtrl();
                    ((DesktopCtrl) Executions.getCurrent().getDesktop()).setVisualizer(vi);
                    //detach root component from old page
                    Page page = appDesktop.getComponent().getPage();
                    Collection<?> collection = page.getRoots();
                    Object[] objects = new Object[0];
                    objects = collection.toArray(objects);
                    for (Object obj : objects) {
                        if (obj instanceof Component) {
                            ((Component) obj).detach();
                            rootComponents.add((Component) obj);
                        }
                    }
                    appDesktop.getComponent().detach();
                    DesktopCache desktopCache = ((SessionCtrl) currSess).getDesktopCache();
                    if (desktopCache != null)
                        desktopCache.removeDesktop(Executions.getCurrent().getDesktop());
                } catch (Exception e) {
                    appDesktop = null;
                } finally {
                    eco.cleanup();
                    current.carryOver();
                }
                if (appDesktop != null) {
                    //re-attach root components
                    for (Component component : rootComponents) {
                        try {
                            component.setPage(this.getPage());
                        } catch (UiException e) {
                        // e.printStackTrace();
                        // an exception is thrown here when refreshing the page, it seems is harmless to catch and ignore it
                        // i.e.: org.zkoss.zk.ui.UiException: Not unique in the ID space of [Page z_kg_0]: zk_comp_2
                        }
                    }
                    appDesktop.setPage(this.getPage());
                    currSess.setAttribute(EXECUTION_CARRYOVER_SESSION_KEY, current);
                }
                currSess.setAttribute(ZK_DESKTOP_SESSION_KEY, this.getPage().getDesktop());
            } catch (Throwable t) {
                //restore fail
                appDesktop = null;
            }
        }
    }
    if (appDesktop == null) {
        //create new desktop
        createDesktop();
        appDesktop.setClientInfo(clientInfo);
        appDesktop.createPart(this.getPage());
        currSess.setAttribute("application.desktop", appDesktop);
        ExecutionCarryOver eco = new ExecutionCarryOver(this.getPage().getDesktop());
        currSess.setAttribute(EXECUTION_CARRYOVER_SESSION_KEY, eco);
        currSess.setAttribute(ZK_DESKTOP_SESSION_KEY, this.getPage().getDesktop());
    }
    if ("Y".equalsIgnoreCase(Env.getContext(ctx, BrowserToken.REMEMBER_ME)) && MSystem.isZKRememberUserAllowed()) {
        MUser user = MUser.get(ctx);
        BrowserToken.save(mSession, user);
    } else {
        BrowserToken.remove();
    }
}
Also used : ArrayList(java.util.ArrayList) MTheme(org.compiere.model.MTheme) MSession(org.compiere.model.MSession) Page(org.zkoss.zk.ui.Page) SessionCtrl(org.zkoss.zk.ui.sys.SessionCtrl) Properties(java.util.Properties) ExecutionCtrl(org.zkoss.zk.ui.sys.ExecutionCtrl) Execution(org.zkoss.zk.ui.Execution) Language(org.compiere.util.Language) DesktopCtrl(org.zkoss.zk.ui.sys.DesktopCtrl) Component(org.zkoss.zk.ui.Component) MUser(org.compiere.model.MUser) HttpSession(javax.servlet.http.HttpSession) UiException(org.zkoss.zk.ui.UiException) IDesktop(org.adempiere.webui.desktop.IDesktop) UiException(org.zkoss.zk.ui.UiException) ExecutionCarryOver(org.zkoss.zk.ui.impl.ExecutionCarryOver) Visualizer(org.zkoss.zk.ui.sys.Visualizer) DesktopCache(org.zkoss.zk.ui.sys.DesktopCache) MSession(org.compiere.model.MSession) HttpSession(javax.servlet.http.HttpSession) Session(org.zkoss.zk.ui.Session)

Example 2 with MTheme

use of org.compiere.model.MTheme in project adempiere by adempiere.

the class AdempiereThemeProvider method getThemeURIs.

public Collection<Object> getThemeURIs(Execution exec, List<Object> uris) {
    String suffix = getThemeFileSuffix();
    if (!Strings.isEmpty(suffix)) {
        bypassURI(uris, suffix);
        MTheme theme = MTheme.get(Env.getCtx(), suffix);
        if (theme != null && theme.get_ID() > 0) {
            String[] themeURIs = theme.getResourcesURIs();
            for (String themeURI : themeURIs) {
                uris.add(themeURI);
            }
        } else {
            uris.add(DefaultTheme.ZK_DEFAULT_THEME_URI);
        }
    }
    return uris;
}
Also used : MTheme(org.compiere.model.MTheme)

Example 3 with MTheme

use of org.compiere.model.MTheme in project adempiere by adempiere.

the class ThemeUtils method getBrowserIcon.

/**
	 * @return resolved url for browser icon
	 * Replaced by ThemeUtils.getBrowserIcon();
	 */
public static String getBrowserIcon() {
    String url = "";
    String currentTheme = Themes.getCurrentTheme();
    MTheme theme = MTheme.get(Env.getCtx(), currentTheme);
    url = theme.getBrowser_Icon_Image();
    if (url == null || url.length() == 0) {
        url = MSysConfig.getValue("ZK_BROWSER_ICON", DefaultTheme.ZK_BROWSER_ICON_IMAGE);
    }
    return ServletFns.resolveThemeURL(url);
}
Also used : MTheme(org.compiere.model.MTheme)

Example 4 with MTheme

use of org.compiere.model.MTheme in project adempiere by adempiere.

the class ThemeUtils method getLoginBottomPanel.

/**
	 * @return url for bottom panel
	 */
public static String getLoginBottomPanel() {
    String url = "";
    String currentTheme = Themes.getCurrentTheme();
    MTheme theme = MTheme.get(Env.getCtx(), currentTheme);
    url = theme.getLogin_Bottom_Panel_Zul();
    if (url == null || url.length() == 0) {
        url = MSysConfig.getValue("ZK_LOGIN_BOTTOM_PANEL_ZUL", DefaultTheme.ZK_LOGIN_BOTTOM_PANEL_ZUL);
    }
    return ServletFns.resolveThemeURL(url);
}
Also used : MTheme(org.compiere.model.MTheme)

Example 5 with MTheme

use of org.compiere.model.MTheme in project adempiere by adempiere.

the class ThemeUtils method registerAllThemes.

/**
	 * Register all active themes
	 */
public static void registerAllThemes(Properties ctx) {
    // Register the system default - needed in the case where there are no themes in
    // the AD_Theme table
    DefaultTheme dt = new DefaultTheme();
    dt.registerDefaultTheme();
    // Register everything else - duplications will only update the theme info.
    for (MTheme theme : MTheme.getAllThemes(ctx)) {
        register(theme);
    }
}
Also used : MTheme(org.compiere.model.MTheme)

Aggregations

MTheme (org.compiere.model.MTheme)12 ArrayList (java.util.ArrayList)1 Properties (java.util.Properties)1 HttpSession (javax.servlet.http.HttpSession)1 IDesktop (org.adempiere.webui.desktop.IDesktop)1 MSession (org.compiere.model.MSession)1 MUser (org.compiere.model.MUser)1 Language (org.compiere.util.Language)1 Component (org.zkoss.zk.ui.Component)1 Execution (org.zkoss.zk.ui.Execution)1 Page (org.zkoss.zk.ui.Page)1 Session (org.zkoss.zk.ui.Session)1 UiException (org.zkoss.zk.ui.UiException)1 ExecutionCarryOver (org.zkoss.zk.ui.impl.ExecutionCarryOver)1 DesktopCache (org.zkoss.zk.ui.sys.DesktopCache)1 DesktopCtrl (org.zkoss.zk.ui.sys.DesktopCtrl)1 ExecutionCtrl (org.zkoss.zk.ui.sys.ExecutionCtrl)1 SessionCtrl (org.zkoss.zk.ui.sys.SessionCtrl)1 Visualizer (org.zkoss.zk.ui.sys.Visualizer)1