All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.cogchar.lifter.snippet.BrowserReadyIndicator.scala Maven / Gradle / Ivy

The newest version!
package org.cogchar.lifter.snippet

import net.liftweb.common.Full
import net.liftweb.http.S
import net.liftweb.http.js.JsCmds.{RedirectTo,Script}
import org.cogchar.impl.web.util.HasLogger
import org.cogchar.lifter.model.main.PageCommander
import xml.NodeSeq


object BrowserReadyIndicator extends HasLogger {

  final val STARTUP_TEMPLATE = "loading"
  final val TEMPLATE_NAME_ATTRIB_NAME = "templateName"
  
  // Needs some refactoring
  def render = {
	S.session match {
	  case Full(myLiftSession) => {
		  val sessionId = myLiftSession.uniqueId
		  PageCommander.checkForActiveSessionAndStartIfNot(sessionId)
		  val templateName: String = (S.attr(TEMPLATE_NAME_ATTRIB_NAME) openOr "NotFound")
		  val desiredTemplate = PageCommander.getSessionOrg.getCurrentTemplateForSession(sessionId)
		  //myLogger.info("Desired template is " + desiredTemplate) // TEST ONLY
		  if (desiredTemplate == null) { // Indicates Lifter has not yet fully initialized
			if (templateName.equals(STARTUP_TEMPLATE)) {
			  //myLogger.info("Parked at default") // TEST ONLY
			  NodeSeq.Empty
			} else {
			  //myLogger.info("Redirecting to default (index)") // TEST ONLY
			  Script(RedirectTo("index"))
			}
		  } else if (templateName.equals(desiredTemplate)) {
			//myLogger.info("Not trying to change template") // TEST ONLY
			NodeSeq.Empty
		  } else {
			//myLogger.info("Trying to change template") // TEST ONLY
			Script(RedirectTo(desiredTemplate))
		  }
		}
	  case _ => {
		  myLogger.error("BrowserReadyIndicator cannot get sessionId, not rendering!")
		  // Add error display in browser
		  NodeSeq.Empty
		}
	}
	
  }
  
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy