##
## Portal Context
##

    #
    # Specify the location of the shared portal web context. All other portals
    # utilize this shared instance of the portal web context.
    #
    # For example, the web application by the name of "liferay.com-web" is
    # deployed with the context root at "/" while the web application by the
    # name of "portal-web" is deployed with the context root at "/portal". The
    # web application at "/" is lean and doesn't contain any actual JSPs, but
    # uses the JSPs and resources found at "/portal".
    #
    # Another web application deployed with the context root at "/another" could
    # also be its own portal instance by reusing the resources found at
    # "/portal". This allows one server to host multiple instances of the portal
    # while minimizing deployed resources.
    #
    portal.ctx=/
    portal.instances=1

##
## Log
##

    #
    # Set the following to true if Log4j complains that it was not properly
    # configured.
    #
    log.configure.log4j=true

    #
    # Set the following to true to persist into the database all the paths that
    # users click.
    #
    log.user.paths=false

##
## Error
##

    #
    # Set the following to true to log the error message.
    #
    error.message.log=true

    #
    # Set the following to true to print the error message to the console.
    #
    error.message.print=false

    #
    # Set the following to true to show the error message to the user.
    #
    error.message.show=true

    #
    # Set the following to true to log the stack trace.
    #
    error.stack.trace.log=false

    #
    # Set the following to true to print the stack trace to the console.
    #
    error.stack.trace.print=true

    #
    # Set the following to true to show the stack trace to the user.
    #
    error.stack.trace.show=false

##
## Company
##

    #
    # Set the list of company types. The display text of each of the company
    # types is set in content/Language.properties.
    #
    company.types=business



##
## Languages and Time Zones
##

    #
    # Specify the available locales. Messages corresponding to a specific
    # language are specified in properties files with file names matching that
    # of content/Language_*.properties. These values can also be overridden in
    # properties files with file names matching that of
    # content/Language-ext_*.properties. Use a comma to separate
    # each entry.
    #
    # All locales must use UTF-8 encoding.
    #
    # The following links specifiy language and country codes:
    #     http://ftp.ics.uci.edu/pub/ietf/http/related/iso639.txt
    #     http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html
    #
    #locales=zh_CN,zh_TW,nl_NL,en_US,fr_FR,de_DE,el_GR,it_IT,ja_JP,ko_KP,pt_BR,es_ES,tr_TR,vi_VN
    locales=en_US,es_ES,it_IT,fr_FR,de_DE,zh_CN,nl_NL,ru_RU,fi_FI
    #
    # Set the following to true if unauthenticated users get their preferred
    # language from the Accept-Language header. Set the following to false if
    # unauthenticated users get their preferred language from their company.
    #
    locale.default.request=false

    #
    # Specify the Struts character encoding. UTF-8 allows for the use of more
    # languages but takes a 15% performance hit compared to ISO-8859-1.
    #
    struts.char.encoding=UTF-8

    #
    # Specify the available time zones. The specified ids must match those from
    # the class java.util.TimeZone.
    #
     time.zones=\
		America/Anchorage,\
		America/Los_Angeles,\
		US/Mountain,\
		US/Central,\
		US/Eastern,\
		America/Caracas,\
		America/Puerto_Rico,\
		Atlantic/Stanley,\
		America/St_Johns,\
		America/Sao_Paulo,\
		America/Noronha,\
		Atlantic/Azores,\
		UTC,\
		Europe/Lisbon,\
		Europe/Paris,\
		Europe/Istanbul,\
        Europe/Stockholm,\
        Europe/London,\
		Europe/Madrid,\
		Asia/Jerusalem,\
		Asia/Baghdad,\
		Asia/Tehran,\
		Asia/Dubai,\
		Asia/Kabul,\
		Asia/Karachi,\
		Asia/Calcutta,\
		Asia/Katmandu,\
		Asia/Dhaka,\
		Asia/Rangoon,\
		Asia/Saigon,\
		Asia/Shanghai,\
		Asia/Tokyo,\
		Asia/Seoul,\
		Australia/Adelaide,\
		Australia/Brisbane,\
		Australia/Broken_Hill,\
		Australia/Darwin,\
		Australia/Hobart,\
		Pacific/Honolulu,\
		Australia/Sydney,\
		Australia/Lord_Howe,\
		Australia/Perth,\
        Pacific/Midway,\
		Pacific/Guadalcanal,\
		Pacific/Auckland,\
		Pacific/Enderbury,\
		Pacific/Kiritimati
		
        #time.zones=Pacific/Midway,Pacific/Honolulu,AST,PST,MST,CST,US/Eastern,PRT,CNT,BET,America/Noronha,Atlantic/Azores,GMT,WET,CET,EET,Asia/Jerusalem,Asia/Baghdad,Iran,Asia/Dubai,Asia/Kabul,Asia/Karachi,IST,Asia/Katmandu,Asia/Dhaka,Asia/Rangoon,VST,CTT,JST,ROK,ACT,AET,SST,NST,Pacific/Enderbury,Pacific/Kiritimati

##
## Session
##

    #
    # Specify the number of minutes before a session expires. This value is
    # always overridden by the value set in web.xml.
    #
    session.timeout=30

    #
    # Specify the number of minutes before a warning is sent to the user
    # informing the user of the session expiration. Specify 0 to disable any
    # warnings.
    #
    session.timeout.warning=0

    #
    # Input a list of comma delimited class names that extend
    # com.liferay.struts.SessionAction. These classes will run at the specified
    # event.
    #

    #
    # Servlet session create event
    #
    servlet.session.create.events=com.liferay.portal.events.SessionCreateAction

    #
    # Servlet session destroy event
    #
    servlet.session.destroy.events=com.liferay.portal.events.SessionDestroyAction


##
## Authentication Pipeline
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.auth.Authenticator. These classes will run before or
    # after the portal authentication begins.
    #
    # The Authenticator class defines the constant values that should be used
    # as return codes from the classes implementing the interface. If
    # authentication is successful, return SUCCESS; if the user exists but the
    # passwords do not match, return FAILURE; and if the user does not exist on
    # the system, return DNE.
    #
    # Constants in Authenticator:
    #     public static final int SUCCESS = 1;
    #     public static final int FAILURE = -1;
    #     public static final int DNE = 0;
    #
    # In case you have several classes in the authentication pipeline, all of
    # them have to return SUCCESS if you want the user to be able to login. If
    # one of the authenticators returns FAILURE or DNE, the login fails.
    #
    # Under certain circumstances, you might want to keep the information in the
    # portal database in sync with an external database or an LDAP server. This
    # can easily be achieved by implementing a class via LDAPAuth that updates
    # the information stored in the portal user database whenever a user signs
    # in.
    #
    # Each portal instance can be configured at run time to either authenticate
    # based on user ids or email addresses. See the Admin portlet for more
    # information.
    #
   
    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.auth.AuthFailure. These classes will run when a user
    # has a failed login or when a user has reached the maximum number of
    # failed logins.
    #
    auth.failure=com.liferay.portal.auth.LoginFailure
    auth.max.failures=com.liferay.portal.auth.LoginMaxFailures
    auth.max.failures.limit=5

    #
    # Set the following to true if users are allowed to have simultaneous logins
    # from different sessions.
    #
    auth.simultaneous.logins=true

    #
    # Set the following to true if users are forwarded to the last visited path
    # upon successful login. If set to false, users will be forwarded to their
    # default layout page.
    #
    auth.forward.by.last.path=true

    
##
## Auto Login
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.auth.AutoLogin. These classes will run in consecutive
    # order for all unauthenticated users until one of them return a valid user
    # id and password combination. If no valid combination is returned, then the
    # request continues to process normally. If a valid combination is returned,
    # then the portal will automatically login that user with the returned user
    # id and password combination.
    #
    # For example, com.liferay.portal.auth.BasicAutoLogin reads from a cookie to
    # automatically log in a user who previously logged in while checking on the
    # "Remember Me" box.
    #
    # This interface allows deployers to easily configure the portal to work
    # with other SSO servers. See com.liferay.portal.auth.CASAutoLogin for an
    # example of how to configure the portal with Yale's SSO server.
    #
    auto.login.hooks=com.liferay.portal.auth.BasicAutoLogin
    #auto.login.hooks=com.liferay.portal.auth.BasicAutoLogin,com.liferay.portal.auth.CASAutoLogin

##
## Passwords
##

    #
    # Input a class name that extends com.liferay.portal.pwd.BasicToolkit. This
    # class will be called to generate and validate passwords.
    #
    passwords.toolkit=com.liferay.portal.pwd.RegExpToolkit

    #
    # If you chose to use the default com.liferay.portal.pwd.RegExpToolkit as
    # your passwords toolkit, set the regular expression pattern that will be
    # used to generate and validate passwords.
    #
    # Note that \ is replaced with \\ to work in Java.
    #

    # This pattern ensures that passwords must have at least 6 characters and no white spaces.
    passwords.regexptoolkit.pattern=/[!#%+1234567890:=?@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]{8,}\\Z/

    # This pattern ensures that passwords must have between 6 and 20 valid
    # characters:
    #           1. must contains one digit from 0-9
    #           2. must contains one lowercase characters
    #           3. must contains one uppercase characters
    #           4. must contains one special symbols in the list "@#$%"
    #           5. match anything with previous condition checking 
    #               length at least 6 characters
    #passwords.regexptoolkit.pattern=/((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,})/
    
    # This pattern ensures that passwords must have at least 8 valid
    # characters consisting of digits and lower case letters and upper case
    # letters.
    #
    #passwords.regexptoolkit.pattern=/(?=.{8})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?!.*[^-\\w])/
    
    #
    # Set a simple human-readable explanation on what character are or are not 
    # allowed in a password as per the previous regexptoolkit property. The 
    # value of this property will be a message key in the Language.properties 
    # file.
    #
    passwords.regexptoolkit.pattern.error=User-Info-Save-Password-Failed

    #
    # Set the following to true if passwords can be a dictionary word.
    #
    passwords.allow.dictionary.word=true

    #
    # Set the following to true if users ought to change their passwords on
    # first use when an Administrator creates their account.
    #
    passwords.change.on.first.use=false

    #
    # Set the number of days that will pass before users are prompted to change
    # their password. Set the number of days to 0 if passwords never expire. 
    #
    passwords.lifespan=0

    #
    # Set the number of days that must have passed before a password is allowed
    # to be recycled and used again. Set the number of days to 0 if passwords
    # can always be reused.
    #
    passwords.recycle=0
    
    #
    # Set a simple human-readable explanation regarding an invalid password 
    # when it cannot be recycled yet. The value of this property will be a 
    # message key in the Language.properties file.
    #
    passwords.recycle.error=User-Info-Save-Password-Recycle-Failed

##
## Startup Events
##

    #
    # Input a list of comma delimited class names that extend
    # com.liferay.struts.SimpleAction. These classes will run at the specified
    # event.
    #

    #
    # Global startup event (runs once when the portal initializes; request and
    # response are passed to the Action class as null objects)
    #
    global.startup.events=com.liferay.portal.events.GlobalStartupAction

    #
    # Application startup event (runs once for every web site instance of the
    # portal that initializes; request and response are passed to the Action
    # class as null objects)
    #
    application.startup.events=com.liferay.portal.events.AppStartupAction

##
## Portal Events
##

    #
    # Input a list of comma delimited class names that extend
    # com.liferay.struts.Action. These classes will run before or after the
    # specified event.
    #

    #
    # Servlet service event (The pre-service events have an associated error
    # page and will forward to that page if an exception is thrown during
    # excecution of the events. The pre-service events process before Struts
    # processes the request. The post-service events process after Struts
    # processes the request.
    #
    servlet.service.events.pre=com.liferay.portal.events.ServicePreAction
    #servlet.service.events.pre.error.page=/common/error.jsp
    #servlet.service.events.post=com.liferay.portal.events.ServicePostAction

    #
    # Login event
    #
    #login.events.pre=com.liferay.portal.events.LoginPreAction
    login.events.post=com.liferay.portal.events.LoginPostAction

    #
    # Logout event
    #
    logout.events.pre=com.liferay.portal.events.LogoutPreAction
    logout.events.post=com.liferay.portal.events.LogoutPostAction,com.liferay.portal.events.GarbageCollectorAction



##
## Value Object
##

    #
    # Set the following to false to disable caching of value objects. To avoid
    # stale data, modify the OSCache settings in system.properties if the portal
    # is load balanced across multiple servers.
    value.object.cacheable=true

    #
    # Set the maximum size of the object cache per object type to ensure that
    # the least recently used objects are removed and made available for garbage
    # collection.
    #
    value.object.max.size=10000

    #
    # You can override the persistence mechanism for a specific class by setting
    # the property "value.object.persistence" plus the class name to a class
    # that extends its default persistence class.
    #
    # For example, if you want the User object to persist to a different
    # database or to a LDAP server, set the property
    # "value.object.persistence.com.liferay.portal.model.User" to your custom
    # class that extends com.liferay.portal.ejb.UserPersistence.
    #
    value.object.persistence.com.liferay.portal.model.User=com.liferay.portal.ejb.UserPersistence
    value.object.listener.com.liferay.portal.model.User=com.liferay.portal.model.UserListener

##
## XSS (Cross Site Scripting)
##

    #
    # Set the following to true to ensure that all persisted data is stripped of
    # XSS hacks.
    #
    xss.allow=false

    #
    # You can override the "xss.allow" setting for a specific class by setting
    # the property "xss.allow" plus the class name.
    #
    xss.allow.com.liferay.portal.model.Portlet=true
    xss.allow.com.liferay.portal.model.PortletPreferences=true
    xss.allow.com.liferay.portal.model.Skin=true



    #
    # Set the following to false if administrator should not be allowed to
    # change the mail domain via the Admin portlet.
    #
    mail.mx.update=true

##
## Main Servlet
##

    #
    # Servlets can be protected by com.liferay.filters.secure.SecureFilter.
    #
    # Input a list of comma delimited IPs that can access this servlet. Input a
    # blank list to allow any IP to access this servlet. SERVER_IP will be
    # replaced with the IP of the host server.
    #
    main.servlet.hosts.allowed=

    #
    # Set the following to true if this servlet can only be accessed via https.
    #
    main.servlet.https.required=false



    
##
## dotCMS properties
## 

portal.release=professional

portal.ctx=/

#
# Input a list of comma delimited system role names that will exist in
# addition to the standard system roles. When the server starts, the portal
# checks to ensure all system roles exist. Any missing system role will be
# created by the portal.
#
system.roles=LDAP User,Scripting User,CMS Owner,CMS Anonymous,CMS Administrator,Login As,Form Editor

#
# Input a list of comma delimited portlet ids that can be added by the user 
# to layouts and have them available through the navigation.
#
portlets.excluded.from.layout=my-account,EXT_2,folders, director,events,web-forms,events-approval,EXT_WEBEVENTS,web-event-registrations, files-legacy, legacy-page-views, html-pages

#
# Specify the Struts character encoding. UTF-8 allows for the use of more
# languages but takes a 15% performance hit compared to ISO-8859-1.
#
struts.char.encoding=UTF-8

#
# Set the following to true if all users are required to agree to the terms
# of use.
#
terms.of.use.required=false

#
# Set the following to false if the system does not use multiple skins.
#
skins.multiple=false

#
# Specify the number of minutes before a session expires. This value is
# always overridden by the value set in web.xml.
#
session.timeout=60

#
# Keys listed in default.user.layout.portlet.keys must match the portlet ids
# found in portlet.xml.
#
# This sets the portlet default to 1 wide column and makes it the workflow portlet.
default.user.layout.column.order=w,
default.user.layout.portlet.keys=workflow,
default.user.layout.name=Home
layout.name.max.length=50

#this sets the non-logged in user's page
default.guest.layout.column.order=n1,w,
default.guest.layout.portlet.keys=,2,
default.guest.layout.name=Login


# allow 15 tabs per row
layout.tabs.per.row=15

#
# Set the following to true if users are allowed to add portlets from the
# layout page.
#
layout.add.portlets=false

index.on.startup=false


## This variables must be set when you use multiple servers to indicate the header URL
#web.server.host=www.gettysburg.edu

dl.file.max.size=0



##
## Authentication Pipeline
##

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.auth.Authenticator. These classes will run before or
    # after the portal authentication begins.
    #
    # The Authenticator class defines the constant values that should be used
    # as return codes from the classes implementing the interface. If
    # authentication is successful, return SUCCESS; if the user exists but the
    # passwords do not match, return FAILURE; and if the user does not exist on
    # the system, return DNE.
    #
    # Constants in Authenticator:
    #     public static final int SUCCESS = 1;
    #     public static final int FAILURE = -1;
    #     public static final int DNE = 0;
    #
    # In case you have several classes in the authentication pipeline, all of
    # them have to return SUCCESS if you want the user to be able to login. If
    # one of the authenticators returns FAILURE or DNE, the login fails.
    #
    # Under certain circumstances, you might want to keep the information in the
    # portal database in sync with an external database or an LDAP server. This
    # can easily be achieved by implementing a class via LDAPAuth that updates
    # the information stored in the portal user database whenever a user signs
    # in.
    #
    # Each portal instance can be configured at run time to either authenticate
    # based on user ids or email addresses. See the Admin portlet for more
    # information.
    #
    
    # LDAP (LDAP Servers)
    # once a user is authenticated, LDAP will query the user and pull a list
    # of groups that the user belongs to 
    # These groups will be created in the CMS on the fly and the CMS user will
    # be associated with them.
    #auth.pipeline.pre=com.dotcms.enterprise.LDAPProxy
    #auth.impl.ldap.initial.context.factory=com.sun.jndi.ldap.LdapCtxFactory
    # Set SSL if you are using LDAPS  or leave blank
    #auth.impl.ldap.security.authentication=
    # set path to keystore with root server cert imported or leave blank 
    #auth.impl.ldap.security.keystore.path=
    #auth.impl.ldap.host=192.168.1.34
    #auth.impl.ldap.port=389
    # should be full dn of user
    #auth.impl.ldap.userid=cn=xxxxxx,ou=Users,dc=miami,dc=dotmarketing,dc=com
    #auth.impl.ldap.password=xxxxxxx
    #auth.impl.ldap.domainlookup=dc=miami,dc=dotmarketing,dc=com
    #auth.impl.build.groups=true
    #auth.impl.ldap.build.group.name.filter=^dotcms_(.*)
	# Prefix the dotcms should strip from group name.  Leave blank to not strip any prefix.
	#auth.impl.ldap.build.group.name.filter.strip=dotcms_
	#If you set to false any user created from LDAP will not be able to log into the dotCMS if LDAP is not availible. 
	auth.impl.ldap.syncPassword=true
	
	# The following attributes can be used to match up dotCMS user properties to LDAP Attributes.  Uncomment all attributes.
	# If you leave the attribute blank then it will not be synced from LDAP. 
	# NOTE:  YOU CANNOT HAVE A GROUP NAME WITH A "=" IN IT 

	#auth.impl.ldap.attrib.user=samAccountName
	#auth.impl.ldap.attrib.firstName=givenName
	#auth.impl.ldap.attrib.middleName=middleName
	#auth.impl.ldap.attrib.lastName=sn
	#auth.impl.ldap.attrib.nickName=
	#auth.impl.ldap.attrib.email=mail
	#auth.impl.ldap.attrib.gender=
	#auth.impl.ldap.attrib.group=memberOf


	##Use the following variable to set a different validator class for userId
	users.id.validator=com.dotmarketing.auth.UserIdValidatorImpl

    #
    # Input a list of comma delimited class names that implement
    # com.liferay.portal.auth.AuthFailure. These classes will run when a user
    # has a failed login or when a user has reached the maximum number of
    # failed logins.
    #
    auth.failure=com.liferay.portal.auth.LoginFailure
    auth.max.failures=com.liferay.portal.auth.LoginMaxFailures
    auth.max.failures.limit=5

    #
    # Set the following to true if users are allowed to have simultaneous logins
    # from different sessions.
    #
    auth.simultaneous.logins=true

    #
    # Set the following to true if users are forwarded to the last visited path
    # upon successful login. If set to false, users will be forwarded to their
    # default layout page.
    #
    auth.forward.by.last.path=true
    
    #use the following with the CreateUserFolderFromSkelton post login hook.  
    #Use the Post Login Hook to create a folder with the name of the user's userId.  it will create the folder and copy all HTMLPages into that folder.
    #It will also copy any sub folders with their HTMLPages and so on.
    #To add the CreateUserFolderFromSkelton add the following to the comma seperated list of post hooks, login.events.post, 
    #class to add com.dotmarketing.auth.post.CreateUserFolderFromSkelton
    #this should be the path of the skeleton folder to copy
    #The folders should begin and end with a / ie... /path/
    #auth.post.CreateUserFolderFromSkelton.skeleton=/skeleton/
    #this is the path where the new directory with the user's userId should be placed
    #auth.post.CreateUserFolderFromSkelton.destination=/user/
    #this is the hostname of the host the folder is in If you do not specify a host it will use the default.  So leave commented out for default host
    #auth.post.CreateUserFolderFromSkelton.host=localhost
    #the role one needs to have directory created
    #auth.post.CreateUserFolderFromSkelton.role=ePortfolio Student
	
    login.events.post=com.liferay.portal.events.LoginPostAction,com.dotmarketing.portal.struts.DotCustomLoginPostAction
    password.forgot.show=true
  
    

