6 | @title
7 |
8 |
9 |
10 |
11 |
12 | @body
13 |
14 |
15 |
--------------------------------------------------------------------------------
/conf/application.conf:
--------------------------------------------------------------------------------
1 | # This is the main configuration file for the application.
2 | # ~~~~~
3 | application.name=app
4 |
5 | # Application mode
6 | # ~~~~~
7 | # Set to dev to enable instant reloading and other development help.
8 | # Otherwise set to prod.
9 | application.mode=dev
10 | %prod.application.mode=prod
11 |
12 | # Secret key
13 | # ~~~~~
14 | # The secret key is used to secure cryptographics functions
15 | # If you deploy your application to several instances be sure to use the same key !
16 | application.secret=StW7NwIX0yXNahM2tYg6Oe0qK5cZocr3lw8CZDVVfDonMOpE3xxacJDzOc8xk6Rp
17 |
18 | # i18n
19 | # ~~~~~
20 | # Define locales used by your application.
21 | # You can then place localized messages in conf/messages.{locale} files
22 | # application.langs=fr,en,ja
23 |
24 | # Date format
25 | # ~~~~~
26 | date.format=yyyy-MM-dd
27 | # date.format.fr=dd/MM/yyyy
28 |
29 | # Server configuration
30 | # ~~~~~
31 | # If you need to change the HTTP port, uncomment this (default is set to 9000)
32 | # http.port=9000
33 | #
34 | # By default the server listen for HTTP on the wilcard address.
35 | # You can restrict this.
36 | # http.address=127.0.0.1
37 | #
38 | # Use this if you don't host your Play application at the root of the domain
39 | # you're serving it from. This parameter has no effect when deployed as a
40 | # war, because the path will be handled by the application server.
41 | # http.path=/
42 |
43 | # Session configuration
44 | # ~~~~~~~~~~~~~~~~~~~~~~
45 | # By default, session will be written to the transient PLAY_SESSION cookie.
46 | # The cookies are not secured by default, only set it to true
47 | # if you're serving your pages through https.
48 | # application.session.cookie=PLAY
49 | # application.session.maxAge=1h
50 | # application.session.secure=false
51 |
52 | # Session/Cookie sharing between subdomain
53 | # ~~~~~~~~~~~~~~~~~~~~~~
54 | # By default a cookie is only valid for a specific domain. By setting
55 | # application.defaultCookieDomain to '.example.com', the cookies
56 | # will be valid for all domains ending with '.example.com', ie:
57 | # foo.example.com and bar.example.com
58 | # application.defaultCookieDomain=.example.com
59 |
60 | # JVM configuration
61 | # ~~~~~
62 | # Define which port is used by JPDA when application is in debug mode (default is set to 8000)
63 | # jpda.port=8000
64 | #
65 | # Java source level => 1.5, 1.6 or 1.7 (experimental)
66 | # java.source=1.5
67 |
68 | # Log level
69 | # ~~~~~
70 | # Specify log level for your application.
71 | # If you want a very customized log, create a log4j.properties file in the conf directory
72 | # application.log=INFO
73 | #
74 | # More logging configuration
75 | # application.log.path=/log4j.properties
76 | # application.log.system.out=off
77 |
78 | # Database configuration
79 | # ~~~~~
80 | # Enable a database engine if needed.
81 | #
82 | # To quickly set up a development database, use either:
83 | # - mem : for a transient in memory database (H2 in memory)
84 | # - fs : for a simple file written database (H2 file stored)
85 | # db=mem
86 | #
87 | # To connect to a local MySQL5 database, use:
88 | # db=mysql:user:pwd@database_name
89 | #
90 | # If you need a full JDBC configuration use the following :
91 | # db.url=jdbc:postgresql:database_name
92 | # db.driver=org.postgresql.Driver
93 | # db.user=root
94 | # db.pass=secret
95 | #
96 | # Connections pool configuration :
97 | # db.pool.timeout=1000
98 | # db.pool.maxSize=30
99 | # db.pool.minSize=10
100 | #
101 | # If you want to reuse an existing Datasource from your application server, use:
102 | # db=java:/comp/env/jdbc/myDatasource
103 | #
104 | # When using an existing Datasource, it's sometimes needed to destroy it when
105 | # the application is stopped. Depending on the datasource, you can define a
106 | # generic "destroy" method :
107 | # db.destroyMethod=close
108 |
109 | # JPA Configuration (Hibernate)
110 | # ~~~~~
111 | #
112 | # Specify the custom JPA dialect to use here (default to guess):
113 | # jpa.dialect=org.hibernate.dialect.PostgreSQLDialect
114 | #
115 | # Specify the ddl generation pattern to use. Set to none to disable it
116 | # (default to update in DEV mode, and none in PROD mode):
117 | # jpa.ddl=update
118 | #
119 | # Debug SQL statements (logged using DEBUG level):
120 | # jpa.debugSQL=true
121 | #
122 | # You can even specify additional hibernate properties here:
123 | # hibernate.use_sql_comments=true
124 | # ...
125 | #
126 | # Store path for Blob content
127 | attachments.path=data/attachments
128 |
129 | # Memcached configuration
130 | # ~~~~~
131 | # Enable memcached if needed. Otherwise a local cache is used.
132 | # memcached=enabled
133 | #
134 | # Specify memcached host (default to 127.0.0.1:11211)
135 | # memcached.host=127.0.0.1:11211
136 | #
137 | # Or you can specify multiple host to build a distributed cache
138 | # memcached.1.host=127.0.0.1:11211
139 | # memcached.2.host=127.0.0.1:11212
140 |
141 | # HTTP Response headers control for static files
142 | # ~~~~~
143 | # Set the default max-age, telling the user's browser how long it should cache the page.
144 | # Default is 3600 (one hour). Set it to 0 to send no-cache.
145 | # This is only read in prod mode, in dev mode the cache is disabled.
146 | # http.cacheControl=3600
147 |
148 | # If enabled, Play will generate entity tags automatically and send a 304 when needed.
149 | # Default is true, set it to false to deactivate use of entity tags.
150 | # http.useETag=true
151 |
152 | # Custom mime types
153 | # mimetype.xpi=application/x-xpinstall
154 |
155 | # WS configuration
156 | # ~~~~~
157 | # Default engine is Async Http Client, uncomment to use
158 | # the JDK's internal implementation
159 | # webservice = urlfetch
160 | # If you need to set proxy params for WS requests
161 | # http.proxyHost = localhost
162 | # http.proxyPort = 3128
163 | # http.proxyUser = jojo
164 | # http.proxyPassword = jojo
165 |
166 | # Mail configuration
167 | # ~~~~~
168 | # Default is to use a mock Mailer
169 | mail.smtp=mock
170 |
171 | # Or, specify mail host configuration
172 | # mail.smtp.host=127.0.0.1
173 | # mail.smtp.user=admin
174 | # mail.smtp.pass=
175 | # mail.smtp.channel=ssl
176 |
177 | # Url-resolving in Jobs
178 | # ~~~~~~
179 | # When rendering templates with reverse-url-resoling (@@{..}) in Jobs (which do not have an inbound Http.Request),
180 | # ie if sending a HtmlMail, Play need to know which url your users use when accessing your app.
181 | # %test.application.baseUrl=http://localhost:9000/
182 | # %prod.application.baseUrl=http://www.yourdomain.com/
183 |
184 | # Jobs executor
185 | # ~~~~~~
186 | # Size of the Jobs pool
187 | # play.jobs.pool=10
188 |
189 | # Execution pool
190 | # ~~~~~
191 | # Default to 1 thread in DEV mode or (nb processors + 1) threads in PROD mode.
192 | # Try to keep a low as possible. 1 thread will serialize all requests (very useful for debugging purpose)
193 | # play.pool=3
194 |
195 | # Open file from errors pages
196 | # ~~~~~
197 | # If your text editor supports opening files by URL, Play! will
198 | # dynamically link error pages to files
199 | #
200 | # Example, for textmate:
201 | # play.editor=txmt://open?url=file://%s&line=%s
202 |
203 | # Testing. Set up a custom configuration for test mode
204 | # ~~~~~
205 | #%test.module.cobertura=${play.path}/modules/cobertura
206 | %test.application.mode=dev
207 | %test.db.url=jdbc:h2:mem:play;MODE=MYSQL;LOCK_MODE=0
208 | %test.jpa.ddl=create
209 | %test.mail.smtp=mock
210 |
--------------------------------------------------------------------------------
/conf/dependencies.yml:
--------------------------------------------------------------------------------
1 | # Application dependencies
2 |
3 | require:
4 | - play
5 | - play -> scala 0.9.1
--------------------------------------------------------------------------------
/conf/messages:
--------------------------------------------------------------------------------
1 | # You can specialize this file for each language.
2 | # For example, for French create a messages.fr file
3 | #
4 |
--------------------------------------------------------------------------------
/conf/routes:
--------------------------------------------------------------------------------
1 | # Routes
2 | # This file defines all application routes (Higher priority routes first)
3 | # ~~~~
4 |
5 | # Home page
6 | GET / Application.index
7 |
8 | # Ignore favicon requests
9 | GET /favicon.ico 404
10 |
11 | # Map static resources from the /app/public folder to the /public path
12 | GET /public/ staticDir:public
13 |
14 | # Catch all
15 | * /{controller}/{action} {controller}.{action}
16 |
--------------------------------------------------------------------------------
/public/images/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lstoll/heroku-playframework-scala/385f736dd28d6da746a588177153d43b198b6cc4/public/images/favicon.png
--------------------------------------------------------------------------------
/public/javascripts/jquery-1.5.2.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * jQuery JavaScript Library v1.5.2
3 | * http://jquery.com/
4 | *
5 | * Copyright 2011, John Resig
6 | * Dual licensed under the MIT or GPL Version 2 licenses.
7 | * http://jquery.org/license
8 | *
9 | * Includes Sizzle.js
10 | * http://sizzlejs.com/
11 | * Copyright 2011, The Dojo Foundation
12 | * Released under the MIT, BSD, and GPL Licenses.
13 | *
14 | * Date: Thu Mar 31 15:28:23 2011 -0400
15 | */
16 | (function(a,b){function ci(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cf(a){if(!b_[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";b_[a]=c}return b_[a]}function ce(a,b){var c={};d.each(cd.concat.apply([],cd.slice(0,b)),function(){c[this]=a});return c}function b$(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bZ(){try{return new a.XMLHttpRequest}catch(b){}}function bY(){d(a).unload(function(){for(var a in bW)bW[a](0,1)})}function bS(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g=0===c})}function P(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function H(a,b){return(a&&a!=="*"?a+".":"")+b.replace(t,"`").replace(u,"&")}function G(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,p=[],q=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;ic)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function E(a,c,e){var f=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function y(){return!0}function x(){return!1}function i(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function h(a,c,e){if(e===b&&a.nodeType===1){e=a.getAttribute("data-"+c);if(typeof e==="string"){try{e=e==="true"?!0:e==="false"?!1:e==="null"?null:d.isNaN(e)?g.test(e)?d.parseJSON(e):e:parseFloat(e)}catch(f){}d.data(a,c,e)}else e=b}return e}var c=a.document,d=function(){function G(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(G,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x,y,z=Object.prototype.toString,A=Object.prototype.hasOwnProperty,B=Array.prototype.push,C=Array.prototype.slice,D=String.prototype.trim,E=Array.prototype.indexOf,F={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5.2",length:0,size:function(){return this.length},toArray:function(){return C.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?B.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),x.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(C.apply(this,arguments),"slice",C.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:B,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;x.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=d._Deferred();if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",y,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",y),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&G()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):F[z.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!A.call(a,"constructor")&&!A.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||A.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g1?f.call(arguments,0):c,--g||h.resolveWith(h,f.call(b,0))}}var b=arguments,c=0,e=b.length,g=e,h=e<=1&&a&&d.isFunction(a.promise)?a:d.Deferred();if(e>1){for(;c