Example #1
0
	    region.show = function(view,force_flush,force_no_waiting) {
	    	vent.trigger('screen:leave',App.getCurrentScreenData(),App.getQueriedScreen(),currentView);
	    	
			App.addQueriedScreenToHistory(force_flush);
			
	    	showView(view,force_no_waiting);
	    };
	    var switchScreen = function( view, force_flush, force_no_waiting ) {
			var queried_screen = App.getQueriedScreen();
			vent.trigger( 'screen:leave', App.getCurrentScreenData(), queried_screen, currentView );

			App.addQueriedScreenToHistory( force_flush );
			if ( view.is_static ) {
				memorizeScreenStaticView( queried_screen, view );
			}

			showView( view, force_no_waiting );
		};
		region.show = function( view_type, view_data, screen_data ) {
			
			App.setQueriedScreen( screen_data );
			var queried_screen = App.getQueriedScreen();

			/**
			 * Use this 'redirect' filter to redirect to a different screen than the queried one, 
			 * just before it is showed.
			 * 
			 * To redirect to a different screen from the filter callback (in themes) : 
			 * - call App.navigate('your_screen_route');
			 * - return true
			 * 
			 * Implementation note : This has to be a filter (not action) so that we 
			 * can stop the showing process if true is returned.
			 */
			var redirect = Hooks.applyFilters( 'redirect', false, [queried_screen, App.getCurrentScreenData()] );
			if( redirect ) {
				return;
			}

			/**
			 * Use this 'is-static-screen' filter to decide whether a screen
			 * is static or not. A static screen is never refreshed or re-rendered
			 * by the app core.
			 */
			var is_static = Hooks.applyFilters( 'is-static-screen', false, [ queried_screen ] )

			if ( is_static ) {
				var screen_view = getScreenStaticView( queried_screen );
				if ( screen_view !== null ) {
					screen_view.checkTemplate( function() {
						switchScreen( screen_view );
					} );
				} else {
					createNewView( view_type, view_data, is_static, function( newview ) {
						newview.checkTemplate( function() {
							switchScreen( newview );
						} );
					} );
				}
			} else {
				createNewView( view_type, view_data, is_static, function( newview ) {
					newview.checkTemplate( function() {
						switchScreen( newview );
					} );
				} );
			}
		}
        setTemplate : function(default_template,fallback_template){
        	
        	var template = default_template != undefined ? default_template : '';
        	
    		template = Hooks.applyFilters('template',template,[App.getQueriedScreen()]);

    		if( template != ''){
    			this.template_name = template;
    			
    			if( fallback_template != undefined && fallback_template != ''){
        			this.fallback_template_name = fallback_template;
        		}
    		}
    		
        }