diff --git a/ChangeLog b/ChangeLog index 2053387e..4c847bc2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2015-12-09 Paul Schneider + + * README.md: mise à jour des priorités + 2015-12-01 Paul Schneider * README.md: mise à jour priorités diff --git a/NpgsqlBlogProvider/ChangeLog b/NpgsqlBlogProvider/ChangeLog index 7ec47019..7d853bcc 100644 --- a/NpgsqlBlogProvider/ChangeLog +++ b/NpgsqlBlogProvider/ChangeLog @@ -1,3 +1,10 @@ +2015-12-09 Paul Schneider + + * NpgsqlBlogProvider.cs: Corrige la méthode pour enlever un + tag à un article ... + + * NpgsqlBlogProvider.csproj: . + 2015-11-30 Paul Schneider * NpgsqlBlogProvider.cs: implémente le compteur de billet en diff --git a/NpgsqlBlogProvider/NpgsqlBlogProvider.cs b/NpgsqlBlogProvider/NpgsqlBlogProvider.cs index 9d78e848..677e5856 100644 --- a/NpgsqlBlogProvider/NpgsqlBlogProvider.cs +++ b/NpgsqlBlogProvider/NpgsqlBlogProvider.cs @@ -20,7 +20,11 @@ namespace Npgsql.Web.Blog string connectionString; #region implemented abstract members of BlogProvider - + /// + /// Gets the public post count. + /// + /// The public post count. + /// Blogger name. public override long GetPublicPostCount (string bloggerName) { long result = -1; @@ -100,7 +104,14 @@ AND b.applicationname = :app /// Name. override public void Untag (long postid, string name) { - Untag (postid, GetTagId (name)); + using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) + using (NpgsqlCommand cmd = cnx.CreateCommand ()) { + cmd.CommandText = "DELETE FROM tagged WHERE tagged.postid = :pid AND tagged.tagid = (select tag._id FROM tag WHERE tag.name = :tnm)"; + cmd.Parameters.AddWithValue ("pid", postid); + cmd.Parameters.AddWithValue ("tnm", name); + cnx.Open (); + cmd.ExecuteNonQuery (); + } } /// @@ -472,15 +483,19 @@ AND b.applicationname = :app private long GetTagId (string tagname) { + // FIXME null pointer at cmd.ExecuteScalar! if (tagname == null) throw new NullReferenceException ("This tag name is null"); long id = 0; - using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) - using (NpgsqlCommand cmd = cnx.CreateCommand ()) { - cmd.CommandText = "SELECT tag._id FROM public.tag WHERE name = :name"; - cmd.Parameters.AddWithValue ("name", tagname); + using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) { + cnx.Open (); - id = (long)cmd.ExecuteScalar (); + using (NpgsqlCommand cmd = cnx.CreateCommand ()) { + cmd.CommandText = "SELECT _id FROM tag WHERE name LIKE :tn"; + cmd.Parameters.AddWithValue ("tn",NpgsqlDbType.Varchar, tagname); + id = (long) cmd.ExecuteScalar (); + } + cnx.Close (); } return id; } diff --git a/NpgsqlBlogProvider/NpgsqlBlogProvider.csproj b/NpgsqlBlogProvider/NpgsqlBlogProvider.csproj index 1b352a78..07a3013f 100644 --- a/NpgsqlBlogProvider/NpgsqlBlogProvider.csproj +++ b/NpgsqlBlogProvider/NpgsqlBlogProvider.csproj @@ -9,7 +9,7 @@ Library Npgsql.Web.Blog NpgsqlBlogProvider - v4.5 + v4.5.1 true diff --git a/NpgsqlContentProvider/ChangeLog b/NpgsqlContentProvider/ChangeLog index 946d0e7b..a4085d99 100644 --- a/NpgsqlContentProvider/ChangeLog +++ b/NpgsqlContentProvider/ChangeLog @@ -1,3 +1,11 @@ +2015-12-09 Paul Schneider + + * NpgsqlCircleProvider.cs: liste les cercles auquels + appartient un utilisateur. + + * NpgsqlContentProvider.cs: Les commandes sont fortement + typée. + 2015-11-30 Paul Schneider * NpgsqlContentProvider.csproj: ... diff --git a/NpgsqlContentProvider/NpgsqlCircleProvider.cs b/NpgsqlContentProvider/NpgsqlCircleProvider.cs index 382d77af..37346315 100644 --- a/NpgsqlContentProvider/NpgsqlCircleProvider.cs +++ b/NpgsqlContentProvider/NpgsqlCircleProvider.cs @@ -37,6 +37,38 @@ namespace WorkFlowProvider public class NpgsqlCircleProvider : CircleProvider { #region implemented abstract members of CircleProvider + /// + /// Circles the specified ownername and username. + /// + /// Ownername. + /// Username. + public override string[] Circles (string ownername, string username) + { + List circles = new List (); + using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) { + using (NpgsqlCommand cmd = cnx.CreateCommand ()) { + cmd.CommandText = @"select c.title from circle c, circle_members m + where c.owner = :wnr + and c._id = m.circle_id + and m.member = :user +and m.applicationname = :app +"; + cmd.Parameters.AddWithValue ("wnr",ownername); + cmd.Parameters.AddWithValue ("user",username); + cmd.Parameters.AddWithValue ("app",applicationName); + cnx.Open (); + using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) { + if (rdr.HasRows) while (rdr.Read ()) + circles.Add (rdr.GetString (0)); + rdr.Close (); + } + } + cnx.Close (); + } + return circles.ToArray(); + } + + /// /// Updates the circle. /// diff --git a/NpgsqlContentProvider/NpgsqlContentProvider.cs b/NpgsqlContentProvider/NpgsqlContentProvider.cs index 9a2f2e0f..ff714f5b 100644 --- a/NpgsqlContentProvider/NpgsqlContentProvider.cs +++ b/NpgsqlContentProvider/NpgsqlContentProvider.cs @@ -210,13 +210,14 @@ namespace Yavsc using (NpgsqlConnection cnx = CreateConnection ()) { using (NpgsqlCommand cmd = cnx.CreateCommand ()) { cmd.CommandText = - "select id,creation,prdref,params from commandes where @user = clientname and applicationname = @app"; + "select id,creation,prdref,params,class from commandes where @user = clientname and applicationname = @app"; cmd.Parameters.AddWithValue ("@user", username); cmd.Parameters.AddWithValue ("@app", this.ApplicationName); cnx.Open (); using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) { while (rdr.Read ()) { - Command ycmd = new Command (); + string cls = rdr.GetString (4); + Command ycmd = Command.CreateCommand(cls); ycmd.Id = rdr.GetInt64 (0); ycmd.CreationDate = rdr.GetDateTime (1); ycmd.ProductRef = rdr.GetString (2); diff --git a/README.md b/README.md index 03cc429f..8483ee86 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,12 @@ yavsc * Si c'est un préstataire, et si on est pas déjà dans un formulaire de reservation, un lien vers la reservation de ses services - Et Donner des descriptions textuelles au cotes (ex: dans le cadre d'un prestataire, ses 5 cotes seraient + +1.1) Donner des descriptions textuelles au cotes (ex: dans le cadre d'un prestataire, ses 5 cotes seraient par exemple "Nouvelle star" "Artiste local" "Artiste régional" "Star nationale" "Star internationale" +1.2) Concevoir un objet Contact listant les point d'accès par protocol (email, http, sip, irc, téléphone, adresse postale ...) + 2) Refabrication de l'Api : concernant la mise à jour la creation et l'edition d'un post, on diff --git a/web/ApiControllers/BasketController.cs b/web/ApiControllers/BasketController.cs index 2281d00d..b70dfb8e 100644 --- a/web/ApiControllers/BasketController.cs +++ b/web/ApiControllers/BasketController.cs @@ -39,7 +39,7 @@ namespace Yavsc.ApiControllers public long Create(NameValueCollection cmdParams) { // HttpContext.Current.Request.Files - Command cmd = new Command(cmdParams, HttpContext.Current.Request.Files); + Command cmd = Command.CreateCommand(cmdParams, HttpContext.Current.Request.Files); CurrentBasket.Add (cmd); return cmd.Id; } diff --git a/web/App_Themes/animate.css b/web/App_Themes/animate.css new file mode 100644 index 00000000..5709d4c5 --- /dev/null +++ b/web/App_Themes/animate.css @@ -0,0 +1,3273 @@ +@charset "UTF-8"; + +/*! +Animate.css - http://daneden.me/animate +Version - 3.4.0 +Licensed under the MIT license - http://opensource.org/licenses/MIT + +Copyright (c) 2015 Daniel Eden +*/ + +.animated { + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.animated.infinite { + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; +} + +.animated.hinge { + -webkit-animation-duration: 2s; + animation-duration: 2s; +} + +.animated.bounceIn, +.animated.bounceOut { + -webkit-animation-duration: .75s; + animation-duration: .75s; +} + +.animated.flipOutX, +.animated.flipOutY { + -webkit-animation-duration: .75s; + animation-duration: .75s; +} + +@-webkit-keyframes bounce { + from, 20%, 53%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + } + + 40%, 43% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + -webkit-transform: translate3d(0, -30px, 0); + transform: translate3d(0, -30px, 0); + } + + 70% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + -webkit-transform: translate3d(0, -15px, 0); + transform: translate3d(0, -15px, 0); + } + + 90% { + -webkit-transform: translate3d(0,-4px,0); + transform: translate3d(0,-4px,0); + } +} + +@keyframes bounce { + from, 20%, 53%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + } + + 40%, 43% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + -webkit-transform: translate3d(0, -30px, 0); + transform: translate3d(0, -30px, 0); + } + + 70% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + -webkit-transform: translate3d(0, -15px, 0); + transform: translate3d(0, -15px, 0); + } + + 90% { + -webkit-transform: translate3d(0,-4px,0); + transform: translate3d(0,-4px,0); + } +} + +.bounce { + -webkit-animation-name: bounce; + animation-name: bounce; + -webkit-transform-origin: center bottom; + transform-origin: center bottom; +} + +@-webkit-keyframes flash { + from, 50%, to { + opacity: 1; + } + + 25%, 75% { + opacity: 0; + } +} + +@keyframes flash { + from, 50%, to { + opacity: 1; + } + + 25%, 75% { + opacity: 0; + } +} + +.flash { + -webkit-animation-name: flash; + animation-name: flash; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes pulse { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 50% { + -webkit-transform: scale3d(1.05, 1.05, 1.05); + transform: scale3d(1.05, 1.05, 1.05); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes pulse { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 50% { + -webkit-transform: scale3d(1.05, 1.05, 1.05); + transform: scale3d(1.05, 1.05, 1.05); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.pulse { + -webkit-animation-name: pulse; + animation-name: pulse; +} + +@-webkit-keyframes rubberBand { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 30% { + -webkit-transform: scale3d(1.25, 0.75, 1); + transform: scale3d(1.25, 0.75, 1); + } + + 40% { + -webkit-transform: scale3d(0.75, 1.25, 1); + transform: scale3d(0.75, 1.25, 1); + } + + 50% { + -webkit-transform: scale3d(1.15, 0.85, 1); + transform: scale3d(1.15, 0.85, 1); + } + + 65% { + -webkit-transform: scale3d(.95, 1.05, 1); + transform: scale3d(.95, 1.05, 1); + } + + 75% { + -webkit-transform: scale3d(1.05, .95, 1); + transform: scale3d(1.05, .95, 1); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes rubberBand { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 30% { + -webkit-transform: scale3d(1.25, 0.75, 1); + transform: scale3d(1.25, 0.75, 1); + } + + 40% { + -webkit-transform: scale3d(0.75, 1.25, 1); + transform: scale3d(0.75, 1.25, 1); + } + + 50% { + -webkit-transform: scale3d(1.15, 0.85, 1); + transform: scale3d(1.15, 0.85, 1); + } + + 65% { + -webkit-transform: scale3d(.95, 1.05, 1); + transform: scale3d(.95, 1.05, 1); + } + + 75% { + -webkit-transform: scale3d(1.05, .95, 1); + transform: scale3d(1.05, .95, 1); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.rubberBand { + -webkit-animation-name: rubberBand; + animation-name: rubberBand; +} + +@-webkit-keyframes shake { + from, to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 20%, 40%, 60%, 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} + +@keyframes shake { + from, to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 20%, 40%, 60%, 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} + +.shake { + -webkit-animation-name: shake; + animation-name: shake; +} + +@-webkit-keyframes swing { + 20% { + -webkit-transform: rotate3d(0, 0, 1, 15deg); + transform: rotate3d(0, 0, 1, 15deg); + } + + 40% { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); + } + + 60% { + -webkit-transform: rotate3d(0, 0, 1, 5deg); + transform: rotate3d(0, 0, 1, 5deg); + } + + 80% { + -webkit-transform: rotate3d(0, 0, 1, -5deg); + transform: rotate3d(0, 0, 1, -5deg); + } + + to { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } +} + +@keyframes swing { + 20% { + -webkit-transform: rotate3d(0, 0, 1, 15deg); + transform: rotate3d(0, 0, 1, 15deg); + } + + 40% { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); + } + + 60% { + -webkit-transform: rotate3d(0, 0, 1, 5deg); + transform: rotate3d(0, 0, 1, 5deg); + } + + 80% { + -webkit-transform: rotate3d(0, 0, 1, -5deg); + transform: rotate3d(0, 0, 1, -5deg); + } + + to { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } +} + +.swing { + -webkit-transform-origin: top center; + transform-origin: top center; + -webkit-animation-name: swing; + animation-name: swing; +} + +@-webkit-keyframes tada { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 10%, 20% { + -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); + transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); + } + + 30%, 50%, 70%, 90% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + + 40%, 60%, 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes tada { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 10%, 20% { + -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); + transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); + } + + 30%, 50%, 70%, 90% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + + 40%, 60%, 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.tada { + -webkit-animation-name: tada; + animation-name: tada; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes wobble { + from { + -webkit-transform: none; + transform: none; + } + + 15% { + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + + 30% { + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + + 45% { + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + + 60% { + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + + 75% { + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +@keyframes wobble { + from { + -webkit-transform: none; + transform: none; + } + + 15% { + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + + 30% { + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + + 45% { + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + + 60% { + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + + 75% { + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +.wobble { + -webkit-animation-name: wobble; + animation-name: wobble; +} + +@-webkit-keyframes jello { + from, 11.1%, to { + -webkit-transform: none; + transform: none; + } + + 22.2% { + -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); + transform: skewX(-12.5deg) skewY(-12.5deg); + } + + 33.3% { + -webkit-transform: skewX(6.25deg) skewY(6.25deg); + transform: skewX(6.25deg) skewY(6.25deg); + } + + 44.4% { + -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); + transform: skewX(-3.125deg) skewY(-3.125deg); + } + + 55.5% { + -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); + transform: skewX(1.5625deg) skewY(1.5625deg); + } + + 66.6% { + -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); + transform: skewX(-0.78125deg) skewY(-0.78125deg); + } + + 77.7% { + -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); + transform: skewX(0.390625deg) skewY(0.390625deg); + } + + 88.8% { + -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + } +} + +@keyframes jello { + from, 11.1%, to { + -webkit-transform: none; + transform: none; + } + + 22.2% { + -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); + transform: skewX(-12.5deg) skewY(-12.5deg); + } + + 33.3% { + -webkit-transform: skewX(6.25deg) skewY(6.25deg); + transform: skewX(6.25deg) skewY(6.25deg); + } + + 44.4% { + -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); + transform: skewX(-3.125deg) skewY(-3.125deg); + } + + 55.5% { + -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); + transform: skewX(1.5625deg) skewY(1.5625deg); + } + + 66.6% { + -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); + transform: skewX(-0.78125deg) skewY(-0.78125deg); + } + + 77.7% { + -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); + transform: skewX(0.390625deg) skewY(0.390625deg); + } + + 88.8% { + -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + } +} + +.jello { + -webkit-animation-name: jello; + animation-name: jello; + -webkit-transform-origin: center; + transform-origin: center; +} + +@-webkit-keyframes bounceIn { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + 40% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + + 80% { + -webkit-transform: scale3d(.97, .97, .97); + transform: scale3d(.97, .97, .97); + } + + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes bounceIn { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + 40% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + + 80% { + -webkit-transform: scale3d(.97, .97, .97); + transform: scale3d(.97, .97, .97); + } + + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.bounceIn { + -webkit-animation-name: bounceIn; + animation-name: bounceIn; +} + +@-webkit-keyframes bounceInDown { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -3000px, 0); + transform: translate3d(0, -3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 25px, 0); + transform: translate3d(0, 25px, 0); + } + + 75% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +@keyframes bounceInDown { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -3000px, 0); + transform: translate3d(0, -3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 25px, 0); + transform: translate3d(0, 25px, 0); + } + + 75% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +.bounceInDown { + -webkit-animation-name: bounceInDown; + animation-name: bounceInDown; +} + +@-webkit-keyframes bounceInLeft { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(-3000px, 0, 0); + transform: translate3d(-3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(25px, 0, 0); + transform: translate3d(25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(5px, 0, 0); + transform: translate3d(5px, 0, 0); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +@keyframes bounceInLeft { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(-3000px, 0, 0); + transform: translate3d(-3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(25px, 0, 0); + transform: translate3d(25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(5px, 0, 0); + transform: translate3d(5px, 0, 0); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +.bounceInLeft { + -webkit-animation-name: bounceInLeft; + animation-name: bounceInLeft; +} + +@-webkit-keyframes bounceInRight { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + from { + opacity: 0; + -webkit-transform: translate3d(3000px, 0, 0); + transform: translate3d(3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(-25px, 0, 0); + transform: translate3d(-25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(-5px, 0, 0); + transform: translate3d(-5px, 0, 0); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +@keyframes bounceInRight { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + from { + opacity: 0; + -webkit-transform: translate3d(3000px, 0, 0); + transform: translate3d(3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(-25px, 0, 0); + transform: translate3d(-25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(-5px, 0, 0); + transform: translate3d(-5px, 0, 0); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +.bounceInRight { + -webkit-animation-name: bounceInRight; + animation-name: bounceInRight; +} + +@-webkit-keyframes bounceInUp { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + from { + opacity: 0; + -webkit-transform: translate3d(0, 3000px, 0); + transform: translate3d(0, 3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + 75% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, -5px, 0); + transform: translate3d(0, -5px, 0); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes bounceInUp { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + from { + opacity: 0; + -webkit-transform: translate3d(0, 3000px, 0); + transform: translate3d(0, 3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + 75% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, -5px, 0); + transform: translate3d(0, -5px, 0); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.bounceInUp { + -webkit-animation-name: bounceInUp; + animation-name: bounceInUp; +} + +@-webkit-keyframes bounceOut { + 20% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + + 50%, 55% { + opacity: 1; + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + to { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } +} + +@keyframes bounceOut { + 20% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + + 50%, 55% { + opacity: 1; + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + to { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } +} + +.bounceOut { + -webkit-animation-name: bounceOut; + animation-name: bounceOut; +} + +@-webkit-keyframes bounceOutDown { + 20% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +@keyframes bounceOutDown { + 20% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +.bounceOutDown { + -webkit-animation-name: bounceOutDown; + animation-name: bounceOutDown; +} + +@-webkit-keyframes bounceOutLeft { + 20% { + opacity: 1; + -webkit-transform: translate3d(20px, 0, 0); + transform: translate3d(20px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +@keyframes bounceOutLeft { + 20% { + opacity: 1; + -webkit-transform: translate3d(20px, 0, 0); + transform: translate3d(20px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +.bounceOutLeft { + -webkit-animation-name: bounceOutLeft; + animation-name: bounceOutLeft; +} + +@-webkit-keyframes bounceOutRight { + 20% { + opacity: 1; + -webkit-transform: translate3d(-20px, 0, 0); + transform: translate3d(-20px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +@keyframes bounceOutRight { + 20% { + opacity: 1; + -webkit-transform: translate3d(-20px, 0, 0); + transform: translate3d(-20px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +.bounceOutRight { + -webkit-animation-name: bounceOutRight; + animation-name: bounceOutRight; +} + +@-webkit-keyframes bounceOutUp { + 20% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +@keyframes bounceOutUp { + 20% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +.bounceOutUp { + -webkit-animation-name: bounceOutUp; + animation-name: bounceOutUp; +} + +@-webkit-keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +@keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +.fadeIn { + -webkit-animation-name: fadeIn; + animation-name: fadeIn; +} + +@-webkit-keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInDown { + -webkit-animation-name: fadeInDown; + animation-name: fadeInDown; +} + +@-webkit-keyframes fadeInDownBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInDownBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInDownBig { + -webkit-animation-name: fadeInDownBig; + animation-name: fadeInDownBig; +} + +@-webkit-keyframes fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInLeft { + -webkit-animation-name: fadeInLeft; + animation-name: fadeInLeft; +} + +@-webkit-keyframes fadeInLeftBig { + from { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInLeftBig { + from { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInLeftBig { + -webkit-animation-name: fadeInLeftBig; + animation-name: fadeInLeftBig; +} + +@-webkit-keyframes fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInRight { + -webkit-animation-name: fadeInRight; + animation-name: fadeInRight; +} + +@-webkit-keyframes fadeInRightBig { + from { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInRightBig { + from { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInRightBig { + -webkit-animation-name: fadeInRightBig; + animation-name: fadeInRightBig; +} + +@-webkit-keyframes fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInUp { + -webkit-animation-name: fadeInUp; + animation-name: fadeInUp; +} + +@-webkit-keyframes fadeInUpBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInUpBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInUpBig { + -webkit-animation-name: fadeInUpBig; + animation-name: fadeInUpBig; +} + +@-webkit-keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} + +@keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} + +.fadeOut { + -webkit-animation-name: fadeOut; + animation-name: fadeOut; +} + +@-webkit-keyframes fadeOutDown { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@keyframes fadeOutDown { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +.fadeOutDown { + -webkit-animation-name: fadeOutDown; + animation-name: fadeOutDown; +} + +@-webkit-keyframes fadeOutDownBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +@keyframes fadeOutDownBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +.fadeOutDownBig { + -webkit-animation-name: fadeOutDownBig; + animation-name: fadeOutDownBig; +} + +@-webkit-keyframes fadeOutLeft { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@keyframes fadeOutLeft { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +.fadeOutLeft { + -webkit-animation-name: fadeOutLeft; + animation-name: fadeOutLeft; +} + +@-webkit-keyframes fadeOutLeftBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +@keyframes fadeOutLeftBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +.fadeOutLeftBig { + -webkit-animation-name: fadeOutLeftBig; + animation-name: fadeOutLeftBig; +} + +@-webkit-keyframes fadeOutRight { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +@keyframes fadeOutRight { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +.fadeOutRight { + -webkit-animation-name: fadeOutRight; + animation-name: fadeOutRight; +} + +@-webkit-keyframes fadeOutRightBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +@keyframes fadeOutRightBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +.fadeOutRightBig { + -webkit-animation-name: fadeOutRightBig; + animation-name: fadeOutRightBig; +} + +@-webkit-keyframes fadeOutUp { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@keyframes fadeOutUp { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +.fadeOutUp { + -webkit-animation-name: fadeOutUp; + animation-name: fadeOutUp; +} + +@-webkit-keyframes fadeOutUpBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +@keyframes fadeOutUpBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +.fadeOutUpBig { + -webkit-animation-name: fadeOutUpBig; + animation-name: fadeOutUpBig; +} + +@-webkit-keyframes flip { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 40% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 50% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 80% { + -webkit-transform: perspective(400px) scale3d(.95, .95, .95); + transform: perspective(400px) scale3d(.95, .95, .95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } +} + +@keyframes flip { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 40% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 50% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 80% { + -webkit-transform: perspective(400px) scale3d(.95, .95, .95); + transform: perspective(400px) scale3d(.95, .95, .95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } +} + +.animated.flip { + -webkit-backface-visibility: visible; + backface-visibility: visible; + -webkit-animation-name: flip; + animation-name: flip; +} + +@-webkit-keyframes flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@keyframes flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +.flipInX { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipInX; + animation-name: flipInX; +} + +@-webkit-keyframes flipInY { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@keyframes flipInY { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +.flipInY { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipInY; + animation-name: flipInY; +} + +@-webkit-keyframes flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +@keyframes flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +.flipOutX { + -webkit-animation-name: flipOutX; + animation-name: flipOutX; + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; +} + +@-webkit-keyframes flipOutY { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + opacity: 0; + } +} + +@keyframes flipOutY { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + opacity: 0; + } +} + +.flipOutY { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipOutY; + animation-name: flipOutY; +} + +@-webkit-keyframes lightSpeedIn { + from { + -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; + } + + 60% { + -webkit-transform: skewX(20deg); + transform: skewX(20deg); + opacity: 1; + } + + 80% { + -webkit-transform: skewX(-5deg); + transform: skewX(-5deg); + opacity: 1; + } + + to { + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes lightSpeedIn { + from { + -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; + } + + 60% { + -webkit-transform: skewX(20deg); + transform: skewX(20deg); + opacity: 1; + } + + 80% { + -webkit-transform: skewX(-5deg); + transform: skewX(-5deg); + opacity: 1; + } + + to { + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.lightSpeedIn { + -webkit-animation-name: lightSpeedIn; + animation-name: lightSpeedIn; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; +} + +@-webkit-keyframes lightSpeedOut { + from { + opacity: 1; + } + + to { + -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); + transform: translate3d(100%, 0, 0) skewX(30deg); + opacity: 0; + } +} + +@keyframes lightSpeedOut { + from { + opacity: 1; + } + + to { + -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); + transform: translate3d(100%, 0, 0) skewX(30deg); + opacity: 0; + } +} + +.lightSpeedOut { + -webkit-animation-name: lightSpeedOut; + animation-name: lightSpeedOut; + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; +} + +@-webkit-keyframes rotateIn { + from { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, -200deg); + transform: rotate3d(0, 0, 1, -200deg); + opacity: 0; + } + + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateIn { + from { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, -200deg); + transform: rotate3d(0, 0, 1, -200deg); + opacity: 0; + } + + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateIn { + -webkit-animation-name: rotateIn; + animation-name: rotateIn; +} + +@-webkit-keyframes rotateInDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateInDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateInDownLeft { + -webkit-animation-name: rotateInDownLeft; + animation-name: rotateInDownLeft; +} + +@-webkit-keyframes rotateInDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateInDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateInDownRight { + -webkit-animation-name: rotateInDownRight; + animation-name: rotateInDownRight; +} + +@-webkit-keyframes rotateInUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateInUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateInUpLeft { + -webkit-animation-name: rotateInUpLeft; + animation-name: rotateInUpLeft; +} + +@-webkit-keyframes rotateInUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -90deg); + transform: rotate3d(0, 0, 1, -90deg); + opacity: 0; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateInUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -90deg); + transform: rotate3d(0, 0, 1, -90deg); + opacity: 0; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateInUpRight { + -webkit-animation-name: rotateInUpRight; + animation-name: rotateInUpRight; +} + +@-webkit-keyframes rotateOut { + from { + -webkit-transform-origin: center; + transform-origin: center; + opacity: 1; + } + + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, 200deg); + transform: rotate3d(0, 0, 1, 200deg); + opacity: 0; + } +} + +@keyframes rotateOut { + from { + -webkit-transform-origin: center; + transform-origin: center; + opacity: 1; + } + + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, 200deg); + transform: rotate3d(0, 0, 1, 200deg); + opacity: 0; + } +} + +.rotateOut { + -webkit-animation-name: rotateOut; + animation-name: rotateOut; +} + +@-webkit-keyframes rotateOutDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } +} + +@keyframes rotateOutDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } +} + +.rotateOutDownLeft { + -webkit-animation-name: rotateOutDownLeft; + animation-name: rotateOutDownLeft; +} + +@-webkit-keyframes rotateOutDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +@keyframes rotateOutDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +.rotateOutDownRight { + -webkit-animation-name: rotateOutDownRight; + animation-name: rotateOutDownRight; +} + +@-webkit-keyframes rotateOutUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +@keyframes rotateOutUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +.rotateOutUpLeft { + -webkit-animation-name: rotateOutUpLeft; + animation-name: rotateOutUpLeft; +} + +@-webkit-keyframes rotateOutUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 90deg); + transform: rotate3d(0, 0, 1, 90deg); + opacity: 0; + } +} + +@keyframes rotateOutUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 90deg); + transform: rotate3d(0, 0, 1, 90deg); + opacity: 0; + } +} + +.rotateOutUpRight { + -webkit-animation-name: rotateOutUpRight; + animation-name: rotateOutUpRight; +} + +@-webkit-keyframes hinge { + 0% { + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 20%, 60% { + -webkit-transform: rotate3d(0, 0, 1, 80deg); + transform: rotate3d(0, 0, 1, 80deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 40%, 80% { + -webkit-transform: rotate3d(0, 0, 1, 60deg); + transform: rotate3d(0, 0, 1, 60deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + opacity: 1; + } + + to { + -webkit-transform: translate3d(0, 700px, 0); + transform: translate3d(0, 700px, 0); + opacity: 0; + } +} + +@keyframes hinge { + 0% { + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 20%, 60% { + -webkit-transform: rotate3d(0, 0, 1, 80deg); + transform: rotate3d(0, 0, 1, 80deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 40%, 80% { + -webkit-transform: rotate3d(0, 0, 1, 60deg); + transform: rotate3d(0, 0, 1, 60deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + opacity: 1; + } + + to { + -webkit-transform: translate3d(0, 700px, 0); + transform: translate3d(0, 700px, 0); + opacity: 0; + } +} + +.hinge { + -webkit-animation-name: hinge; + animation-name: hinge; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes rollIn { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes rollIn { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.rollIn { + -webkit-animation-name: rollIn; + animation-name: rollIn; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes rollOut { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + } +} + +@keyframes rollOut { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + } +} + +.rollOut { + -webkit-animation-name: rollOut; + animation-name: rollOut; +} + +@-webkit-keyframes zoomIn { + from { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + 50% { + opacity: 1; + } +} + +@keyframes zoomIn { + from { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + 50% { + opacity: 1; + } +} + +.zoomIn { + -webkit-animation-name: zoomIn; + animation-name: zoomIn; +} + +@-webkit-keyframes zoomInDown { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomInDown { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInDown { + -webkit-animation-name: zoomInDown; + animation-name: zoomInDown; +} + +@-webkit-keyframes zoomInLeft { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); + transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomInLeft { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); + transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInLeft { + -webkit-animation-name: zoomInLeft; + animation-name: zoomInLeft; +} + +@-webkit-keyframes zoomInRight { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); + transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomInRight { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); + transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInRight { + -webkit-animation-name: zoomInRight; + animation-name: zoomInRight; +} + +@-webkit-keyframes zoomInUp { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomInUp { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInUp { + -webkit-animation-name: zoomInUp; + animation-name: zoomInUp; +} + +@-webkit-keyframes zoomOut { + from { + opacity: 1; + } + + 50% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + to { + opacity: 0; + } +} + +@keyframes zoomOut { + from { + opacity: 1; + } + + 50% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + to { + opacity: 0; + } +} + +.zoomOut { + -webkit-animation-name: zoomOut; + animation-name: zoomOut; +} + +@-webkit-keyframes zoomOutDown { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + to { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomOutDown { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + to { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomOutDown { + -webkit-animation-name: zoomOutDown; + animation-name: zoomOutDown; +} + +@-webkit-keyframes zoomOutLeft { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(.1) translate3d(-2000px, 0, 0); + transform: scale(.1) translate3d(-2000px, 0, 0); + -webkit-transform-origin: left center; + transform-origin: left center; + } +} + +@keyframes zoomOutLeft { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(.1) translate3d(-2000px, 0, 0); + transform: scale(.1) translate3d(-2000px, 0, 0); + -webkit-transform-origin: left center; + transform-origin: left center; + } +} + +.zoomOutLeft { + -webkit-animation-name: zoomOutLeft; + animation-name: zoomOutLeft; +} + +@-webkit-keyframes zoomOutRight { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(.1) translate3d(2000px, 0, 0); + transform: scale(.1) translate3d(2000px, 0, 0); + -webkit-transform-origin: right center; + transform-origin: right center; + } +} + +@keyframes zoomOutRight { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(.1) translate3d(2000px, 0, 0); + transform: scale(.1) translate3d(2000px, 0, 0); + -webkit-transform-origin: right center; + transform-origin: right center; + } +} + +.zoomOutRight { + -webkit-animation-name: zoomOutRight; + animation-name: zoomOutRight; +} + +@-webkit-keyframes zoomOutUp { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + to { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomOutUp { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + to { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomOutUp { + -webkit-animation-name: zoomOutUp; + animation-name: zoomOutUp; +} + +@-webkit-keyframes slideInDown { + from { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInDown { + from { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInDown { + -webkit-animation-name: slideInDown; + animation-name: slideInDown; +} + +@-webkit-keyframes slideInLeft { + from { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInLeft { + from { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInLeft { + -webkit-animation-name: slideInLeft; + animation-name: slideInLeft; +} + +@-webkit-keyframes slideInRight { + from { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInRight { + from { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInRight { + -webkit-animation-name: slideInRight; + animation-name: slideInRight; +} + +@-webkit-keyframes slideInUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInUp { + -webkit-animation-name: slideInUp; + animation-name: slideInUp; +} + +@-webkit-keyframes slideOutDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@keyframes slideOutDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +.slideOutDown { + -webkit-animation-name: slideOutDown; + animation-name: slideOutDown; +} + +@-webkit-keyframes slideOutLeft { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@keyframes slideOutLeft { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +.slideOutLeft { + -webkit-animation-name: slideOutLeft; + animation-name: slideOutLeft; +} + +@-webkit-keyframes slideOutRight { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +@keyframes slideOutRight { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +.slideOutRight { + -webkit-animation-name: slideOutRight; + animation-name: slideOutRight; +} + +@-webkit-keyframes slideOutUp { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@keyframes slideOutUp { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +.slideOutUp { + -webkit-animation-name: slideOutUp; + animation-name: slideOutUp; +} \ No newline at end of file diff --git a/web/App_Themes/clear/links.css b/web/App_Themes/clear/links.css new file mode 100644 index 00000000..eb020c55 --- /dev/null +++ b/web/App_Themes/clear/links.css @@ -0,0 +1,51 @@ + + +a, .actionlink { + z-index: 1; + color: white; + display:inline-block; + border-style: solid; + border-width:1px; + padding: 1em; + position: relative; + transition: color 1s; +} + +a:visited { color: white; } + +a:hover, a:visited:hover, .actionlink:hover { + color:black; +} + + +@media print { + .actionlink, .menuitem { display:none;} + } + +div.bback { + position: absolute; + top: 0; + left:0; + width:100%; + height:100%; + z-index: -2; + background-color: rgba(32,32,32,.2); + } + + +div.aback { + transform: scaleX(0); + transform-origin: 0px 50% 0px; + transition: transform 1s; + position: absolute; + top: 0; + left:0; + width:100%; + height:100%; + z-index: -1; + background-color:white; + } + +a:hover > div.aback { + transform: scaleX(1); +} diff --git a/web/App_Themes/clear/style.css b/web/App_Themes/clear/style.css index c37e6b7f..50b62129 100644 --- a/web/App_Themes/clear/style.css +++ b/web/App_Themes/clear/style.css @@ -1,11 +1,14 @@ -@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,600,700); +@import url(http://fonts.googleapis.com/css?family=Josefin+Sans&subset=latin,latin-ext); +@import url(/App_Themes/clear/links.css); body { - background-color: grey; - color: #303030; - font-family: 'Open Sans', sans-serif; + background-color: white; + color: black; + font-family: 'Josefin Sans', sans-serif; + background: url("/App_Themes/images/splash-image-2.jpg") 0 0 repeat fixed ; } -.tagname { color: #D0FFD0; } +.tagname { } + .tagname:hover { background-color: red; } /* Start by setting display:none to make this hidden. @@ -21,68 +24,79 @@ body { } input, textarea, checkbox { - color: #FFA0A0; - background-color: black; + color: black; + background-color: white; + font-size: larger; + border: solid 1px rgb(128,128,128); + animation-name: flash; + animation-duration: 1s; + animation-iteration-count: 1; } -header { - background: url("/App_Themes/images/live-concert-388160_1280.jpg") 50% 0 repeat fixed; - } - -#logo { - background: url("/App_Themes/images/logo.s.png") 1em 1em no-repeat fixed; -} +header { float: left; } -h1, h2, h3 { background-color: rgba(256,256,256,.5); } +h1 { display: inline-block; } nav { - background: url("/App_Themes/images/live-concert-388160_1280.jpg") 50% 10em repeat fixed ; + } nav li { display: inline-block; } + + + main { - background: url("/App_Themes/images/musician-923526_1.nbbi.jpg") 50% 20em repeat fixed ; +clear:both; +background-color: rgba(256,256,256,.5); } footer { - background: url("/App_Themes/images/live-concert-388160_1280.jpg") 50% 30em repeat fixed ; + background: url("/App_Themes/images/splash-image-2.jpg") 0 0 repeat fixed ; } -legend { - background-color: rgba(240,240,240,.5); +legend, .skillname { + background-color: rgba(240,240,240,.8); } -#copyr { background-color: rgba(250,250,250,.8); } +#copyr { } #gspacer { background-color: rgba(209,209,209,.8); } -form { - background-color: rgba(150,150,256,0.8); - } - -fieldset { - background-color: rgba(216,216,256,0.8); +fieldset, .performer { + background-color: rgba(216,216,216,0.8); } - + h1 { + background-color: rgba(256,256,256,.2); + padding: 1em; + color:white; + transition: color 1s; + } .postpreview { background-color: rgba(233,233,233,0.8); + animation-name: slideInDown; + animation-duration: 1s; + animation-iteration-count: 1; } +.postpreview > div { + max-height: 0; + overflow: hidden; + transition: max-height 2s; + } + +.postpreview:hover > div { + overflow: auto; + max-height: 15em; + background-color: rgba(233,233,233,0.8); +} .post { background-color: rgba(256,256,256,0.8); } .hiddenpost { background-color: rgba(160,160,160,0.5); } -a { color: rgb(0,56,0); } -a:hover { background-color: rgba(160,160,160,.7); } - -footer a { - color: black; - background-color: rgba(220,220,220,.8); -} -.panel,.bshpanel, aside { +.panel,.bigpanel, aside { background-color: rgba(200,200,200,.8); } @@ -91,6 +105,7 @@ footer a { } .editable { border: dashed rgb(200,200,256) 2px; + background-color: rgba(256,256,256,.8); } .notification { @@ -102,7 +117,7 @@ footer a { } .error, #error { color: #f88; - background-color: rgba(256,.5); + background-color: rgba(256,0,0,.5); } .validation-summary-errors{ color: #f88; @@ -118,79 +133,87 @@ ul.preview li:nth-child(n) { color: #f88; } -a.menuitem { - color: black; - border: solid black 1px; - background-color: rgba(220,220,220,.8); -} - -.actionlink { - color: black; - border: solid black 1px; - background-color: rgba(220,220,220,.8); -} - -input, select, textarea { - color: black; - background-color:rgba(256,256,256,0.8); - border: solid 1px rgb(128,128,128); -} - a:active { background-color:rgba(184,180,132,0.9); } - input:hover, textarea:hover { - color: white; - background-color:rgba(164,164,164,0.8); +input:hover, textarea:hover { + color: black; + background-color: rgba(256,256,256,.8); } .code { background-color: rgba(230,230,230,0.5); } -.ohafter:hover + .onhover, .ohinside:hover > .onhover { - background-color: rgba(240,240,250,.8); -} .input-validation-error { border: solid 1px red; } .field-validation-error { color: red; } @media all and (max-width: 640px) { + + + #logo { - background: url("/App_Themes/images/logo.xs.png") 0 0 no-repeat fixed; } header { - background: url("/App_Themes/images/live-concert-388160_1280.s.jpg") 50% 0 repeat fixed; } nav { - background: url("/App_Themes/images/live-concert-388160_1280.s.jpg") 50% 10% repeat fixed ; } main { - background: url("/App_Themes/images/musician-923526_1.nbbi.xs.jpg") 50% 20em repeat fixed ; + } footer { - background: url("/App_Themes/images/live-concert-388160_1280.s.jpg") 50% 90% repeat fixed ; + } } @media all and (max-width: 350px) { + #logo { - background: url("/App_Themes/images/logo.xxs.png") 0 0 no-repeat fixed; } header { - background: url("/App_Themes/images/live-concert-388160_1280.xxs.jpg") -1em -1em repeat fixed; } nav { - background: url("/App_Themes/images/live-concert-388160_1280.xxs.jpg") 50% 10% repeat fixed ; } main { - background: url("/App_Themes/images/musician-923526_1.nbbi.xxs.jpg") 50% 20em repeat fixed ; + } footer { - background: url("/App_Themes/images/live-concert-388160_1280.xxs.jpg") 50% 90% repeat fixed ; + } } + +.input-validation-error { border: solid 1px red; background-color: rgba(128,0,0,0.5); + animation-name: hotzone; + animation-duration: 4s; + animation-iteration-count: infinite; + } + +.field-validation-error { color: rgb(256,200,200); background-color: rgba(128,0,0,0.5); + animation-name: hotzone; + animation-duration: 4s; + animation-iteration-count: infinite; + } + +input[type='submit'].clickme { + animation-name: hotzone; + animation-duration: 4s; + animation-iteration-count: infinite; + } + + +@keyframes hotzone { + from { + background-color: rgba(230,230,230,.8); + color: black; + } + 50% {background-color: rgba(256,150,150,.5);} + to { + background-color: rgba(230,230,230,.8); + color: black; + } +} diff --git a/web/App_Themes/dark/links.css b/web/App_Themes/dark/links.css new file mode 100644 index 00000000..9a536d0e --- /dev/null +++ b/web/App_Themes/dark/links.css @@ -0,0 +1,27 @@ + + +.actionlink, .menuitem, a, input[type='submit'] { + display:inline-block; + border-radius:1em; + border-style: solid; + border-width:1px; + cursor: pointer; + padding: 1em; + + animation-name: fadeIn; + animation-duration: 1s; + animation-iteration-count: 1; +} + +.menuitem {} + +a:hover, .actionlink:hover, input[type='submit']:hover { + animation-name: fadeIn; + animation-duration: 1s; + animation-iteration-count: 1; +} + +@media print { + .actionlink, .menuitem { display:none;} + } + diff --git a/web/App_Themes/dark/style.css b/web/App_Themes/dark/style.css index dfb44cc6..9ab2c272 100644 --- a/web/App_Themes/dark/style.css +++ b/web/App_Themes/dark/style.css @@ -1,4 +1,21 @@ +@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,600,700); +@import url(/App_Themes/dark/links.css); +.panel { + display:inline-block; + width: calc(33% - 10px); +} + +@media all and (max-width: 1200px) { +.panel { + width: calc(50% - 5px); + } +} +@media all and (max-width: 720px) { +.panel { + width: 100%; + } +} .skillname { background-color: rgba(16,16,64,0.8); @@ -21,13 +38,8 @@ body { .rate:hover { border-color: green; background-color:rgba(30,0,124,0.9); } -input, textarea, checkbox { - color: #FFFFA0; - background-color: black; - } header { - background: url("http://s448140597.onlinehome.us/wp-content/uploads/2014/12/project-management1.jpg") -20em -20em repeat fixed; } header h1, header a { @@ -60,7 +72,16 @@ legend { #gspacer { background-color: rgba(20,20,20,.8); } - +.thanks { + background-color: rgba(50,50,50,.8); + color: rgb(230,230,230); + font-size: x-small; + font-weight: bold; +} +.thanks:hover { + background-color: rgba(80,80,80,.8); + color: white; +} .postpreview { background-color: rgba(0,0,32,0.8); } @@ -70,12 +91,12 @@ legend { } .hiddenpost { background-color: rgba(16,16,16,0.5); } - -.panel, .spanel, .bshpanel, .xspanel, .xxspanel, aside { + aside { background-color: rgba(20,20,20,.6); border-color: rgb(128,128,128); border-style: solid; border-width: 1px; + padding: 1em; } .usertitleref { @@ -90,15 +111,19 @@ legend { border-color: green ; } .dirty { - background-color: rgba(128,128,0,0.5); + background-color: rgba(128,0,0,0.5); } .error, #error { color: #f88; - background-color: rgba(256,0,0,0.5); + background-color: rgba(128,0,0,0.5); } + + + + .validation-summary-errors{ color: #f88; - background-color: rgba(256,0,0,0.5); + background-color: rgba(128,0,0,0.5); } .validation-summary-errors{ @@ -107,9 +132,18 @@ legend { a { text-decoration: none; + background-color: rgba(30,30,30,.8); + color: yellow; +} +a:hover { + background-color:rgba(50,50,50,.8); + color: white; +} +a:active { + background-color:rgba(124,0,32,0.9); } -.actionlink, .menuitem, a { +.actionlink, .menuitem, input[type='submit'] { border-color: rgb(128,128,0); background-color: rgba(20,20,20,.8); color: yellow; @@ -117,26 +151,21 @@ a { input, select, textarea { color: white; - background-color:rgba(0,0,64,0.8); + background-color:rgba(32,32,32,0.8); border-color: rgb(128,128,128); } -a:hover { - background-color:rgba(30,0,124,0.9); - border-color: green ; -} -a:active { - background-color:rgba(124,0,32,0.9); -} - input:hover, textarea:hover { color: white; - background-color:rgba(64,64,64,0.8); + background-color:rgb(0,0,0); } .code { background-color: rgba(0,0,256,0.1); } +.clickme { + transition: background-color 2s; +} @media all and (max-width: 640px) { header { @@ -223,3 +252,31 @@ header h1, header a { padding:.2em;} .c2 { display:none; } .c2-alt { display:initial; } } + + +.input-validation-error { border: solid 1px red; background-color: rgba(128,0,0,0.5); + animation-name: hotzone; + animation-duration: 4s; + animation-iteration-count: infinite; + } + +.field-validation-error { color: rgb(256,200,200); background-color: rgba(128,0,0,0.5); + animation-name: hotzone; + animation-duration: 4s; + animation-iteration-count: infinite; + } + +input[type='submit'].clickme { + animation-name: hotzone; + animation-duration: 4s; + animation-iteration-count: infinite; + } + + +@keyframes hotzone { + from { + background-color: rgba(30,30,30,.8);} + 50% {background-color: rgba(90,50,50,.8);} + to {background-color: rgba(30,30,30,.8);} +} + diff --git a/web/App_Themes/images/GitHub.ico b/web/App_Themes/images/GitHub.ico new file mode 100644 index 00000000..133f0ca3 Binary files /dev/null and b/web/App_Themes/images/GitHub.ico differ diff --git a/web/App_Themes/images/live-concert-fg.png b/web/App_Themes/images/live-concert-fg.png new file mode 100644 index 00000000..35951ef7 Binary files /dev/null and b/web/App_Themes/images/live-concert-fg.png differ diff --git a/web/App_Themes/images/live-concert-scene.jpg b/web/App_Themes/images/live-concert-scene.jpg new file mode 100644 index 00000000..7b23d274 Binary files /dev/null and b/web/App_Themes/images/live-concert-scene.jpg differ diff --git a/web/App_Themes/images/splash-image-2.jpg b/web/App_Themes/images/splash-image-2.jpg new file mode 100644 index 00000000..e4816a88 Binary files /dev/null and b/web/App_Themes/images/splash-image-2.jpg differ diff --git a/web/App_Themes/links.css b/web/App_Themes/links.css new file mode 100644 index 00000000..7a4432f3 --- /dev/null +++ b/web/App_Themes/links.css @@ -0,0 +1,26 @@ + +.actionlink, .menuitem, a, input[type='submit'] { + display:inline-block; + border-radius:1em; + border-style: solid; + border-width:1px; + cursor: pointer; + padding: 1em; + + animation-name: fadeIn; + animation-duration: 1s; + animation-iteration-count: 1; +} + +.menuitem {} + +a:hover, .actionlink:hover, input[type='submit']:hover { + animation-name: fadeIn; + animation-duration: 1s; + animation-iteration-count: 1; +} + +@media print { + .actionlink, .menuitem { display:none;} + } + diff --git a/web/App_Themes/style.css b/web/App_Themes/style.css index f092246b..a1439950 100644 --- a/web/App_Themes/style.css +++ b/web/App_Themes/style.css @@ -1,4 +1,4 @@ - +@import url(/App_Themes/animate.css); body { padding: 0; margin: 0; @@ -11,42 +11,38 @@ body.loading .modal { display: block; } .rate { - border-radius:1em; border-style: solid; border-width: 1px; - padding:.2em; + margin:.1em; + padding:.1em; display: inline-block; + width:5em; + text-align:center; } header { transition: margin 2s, padding 2s; - padding: 0; + padding: 2em; margin: 0; - padding-top: 2em; - padding-bottom:2em; - display: block; } -header h1, header a { - transition:padding 2s; - margin:0; padding:1em; +header h1 { + transition: padding 2s; } nav { -transition: margin 2s, padding 2s; - margin: 2em; + transition: margin 2s, size 2s; padding: 2em; - display: block; - border-radius:1em; justify-content: space-around; } - +div { + vertical-align: text-top; + transition: margin 2s, padding 2s, height 2s; } main { transition: margin 2s, padding 2s; margin: 2em; padding: 2em; display: block; - border-radius:1em; } main video, main img { max-width:100%; @@ -56,7 +52,6 @@ main video, main img { footer { transition: margin 2s, padding 2s; - margin: 2em; padding: 2em; display: block; clear: both; @@ -71,7 +66,7 @@ footer img { max-height: 3em; vertical-align: middle; } a img, h1 img, .menuitem img { vertical-align: middle; } fieldset { - border-radius:5px; border-style: solid; + border-style: solid; border-width: 1px; } aside { @@ -101,6 +96,8 @@ ul.preview li:nth-child(n) { overflow: auto; } +.switch { cursor: pointer; } + .dispmodal { position: fixed; z-index: 1000; @@ -113,20 +110,13 @@ ul.preview li:nth-child(n) { overflow-x: hidden; } -.postpreview { - display: inline-block; - max-width: 40em; - padding: 1em; - border-radius:1em; -} .postpreview video, .postpreview img { - max-width: 100%; - padding: 1em; + max-height: 3em; + padding: .3em; } .post { display:block; padding: 1em; - border-radius:1em; } .fullwidth { width: 100%; } @@ -139,35 +129,22 @@ textarea.fullwidth { min-height:10em; } display:inline; bottom:0; } -.panel { -display:inline-block; - } -.panel,.bshpanel, aside { - border-radius: 1em; - padding: 1em; -} + .spanel { max-width: 18em; display: inline-block; - border-radius: 1.5em; - padding: .3em; } fieldset { display: inline-block; - border-radius: 1.5em; padding: .3em; } .xspanel { max-width:13em; display: inline-block; - padding:.2em; - border-radius: 1em; } .xxspanel { max-width:7em; display: inline-block; - padding:.1em; - border-radius: .5em; } .hint { @@ -175,21 +152,22 @@ display:inline-block; font-style: italic; font-size: smaller; } + .hint::before { content: "("; } + .hint::after { content: ")"; } .usertitleref { - border-radius: 1em; padding: 1em; } + .editable { margin: .5em; min-height:1em; - border-radius: 1em; border-style: dashed; border-width: 2px; } @@ -199,16 +177,15 @@ content: ")"; border-style: solid; border-width: 1px; padding: 1em; - border-radius:1em; margin:1em; padding:1em; } + .error, #error { font-size: large; } -.hidden { display:none; } - +.hidden { display:none; } .iconsmall { max-height: 1.3em; max-width: 1.3em; } @@ -219,7 +196,6 @@ content: ")"; nav li { display: inline-block; } footer a { - border-radius:1em; padding:1em; } @@ -230,35 +206,23 @@ a img, h1 img, .menuitem img { vertical-align: middle; } legend { - border-radius:5px; padding:.5em; } #copyr { text-align: center; display: block; } #gspacer { - border-radius:1em; margin:1em; padding:1em; display: inline-block } -.actionlink, .menuitem, a { - display:inline-block; - border-radius:1em; - border-style: solid; - border-width:1px; - cursor: pointer; - padding: 1em; -} - input, select, textarea { - border-radius:1em; border-style: solid; border-width:1px; } + .code { font-family: "monospace"; - border-radius:25px; white-space: pre-wrap; } .bigavatar{ @@ -271,44 +235,38 @@ input, select, textarea { } .comment { - border-radius:25px; font-size: smaller; } -.onhover { - display:none; - position: absolute; +.username { + border-style: solid; + border-width: 1px; + font-size: large; + font-weight: bold; + display: inline-block; + animation-name: wobble; + animation-duration: 4s; + animation-iteration-count: 1; + padding:1em; } -.ohafter:hover + .onhover, .ohinside:hover > .onhover { - display:block; - z-index:2; - padding:5px; margin:5px; - background-color: rgba(0,0,40,.8); -} -.skillname, .performer, .usercard, .pagelink { +.skillname, .pagelink { padding:.5em; margin:.25em; max-width: 24em; text-align: center; display: inline-block; - border-radius:1em; border-style: solid; border-width: 1px; font-size: large; } - -.input-validation-error { border: solid 1px red; background-color: rgba(180,256,256,.5); } - -.field-validation-error { color: red; background-color: rgba(180,256,256,.5); } +.performer , .availability { text-align: center; padding: 1em; } .c2 { font-size: small; font-style: italic; } .c3 { font-size: x-small; font-style: italic; } -.rate { - display:inline-bloc; width:5em; cursor: pointer; text-align:center; - } + h2 select { font-size: large; } ul.editablelist { @@ -319,45 +277,47 @@ ul.editablelist>li { margin:.5em; padding:.2em; border: solid grey 1px; - border-radius: 1em; + cursor:pointer; } -ul.editablelist>li:before { +ul.editablelist>li:after { font-family: 'FontAwesome'; - content: "\f007"; + content: " "; } ul.editablelist>li:hover { background-color: rgba(128,0,0,0.5); - cursor:pointer; } -ul.editablelist>li:hover:before { +ul.editablelist>li:hover:after { font-family: 'FontAwesome'; content: "\f00d"; } + .bsh { display: none; } + .c3 { display:initial; } + .c3-alt { display:none; } + + @media all and (min-width: 640px) { + +div.panel { + display:inline-block; + } + +} +.high-z-index { z-index: 99; } @media print { body {background-color:white;color:black;} - .control, .actionlink, .menuitem, nav { display:none;} + .control, nav { display:none;} } - .bshpanel { display: inline-block; } - .bsh { display: none; } - .c3 { display:initial; } - .c3-alt { display:none; } - @media all and (max-width: 640px) { -header { - padding-top:1em; - padding-bottom:1em; - } + #avatar { margin:.5em; } -header h1, header a , .actionlink, .menuitem, a { padding:.5em;} nav { margin: 1em; @@ -372,22 +332,19 @@ header h1, header a , .actionlink, .menuitem, a { padding:.5em;} padding: 1em; } footer a { - border-radius:.5em; margin:.5em; padding:.5em; } .notification { padding: .5em; - border-radius:.5em; margin:.5em; padding:.5em; max-height: 100%; overflow-y: auto; } - .menuitem { - display: block; - } + .menuitem { display: block; } + .post { margin:.3em; padding:.3em; @@ -404,10 +361,7 @@ header h1, header a , .actionlink, .menuitem, a { padding:.5em;} } @media all and (max-width: 380px) { -header { - padding-top:.5em; - padding-bottom:.5em; - } + header h1, header a { padding:.2em;} @@ -415,6 +369,7 @@ header h1, header a { padding:.2em;} margin: .5em; padding: .5em; } + main { margin: .5em; padding: .5em; @@ -424,7 +379,6 @@ header h1, header a { padding:.2em;} padding: .5em; } footer a { - border-radius:.2em; margin:.2em; padding:.2em; } @@ -433,4 +387,3 @@ header h1, header a { padding:.2em;} } - diff --git a/web/ChangeLog b/web/ChangeLog index 6b4d7166..1c5e8a4b 100644 --- a/web/ChangeLog +++ b/web/ChangeLog @@ -1,3 +1,192 @@ +2015-12-09 Paul Schneider + + * animate.css: animations css + + * links.css: liens avec le fond blanc qui se déroule + + * links.css: WIP liens thème sombre + + * GitHub.ico: un petit merci à GitHub + + * live-concert-fg.png: image de plan rapproché : les fans + + * live-concert-scene.jpg: Image de fond : la scene + + * splash-image-2.jpg: image de fond : photo colorée, public de + concert, vient de totemproduction.fr + + + * links.css: ficher de définitions globales du style des + bouttons (encore inutilisé) + + * yavsc.user.js: WIP implémente le widget "utilisateur", + permettant + l'affichage des liens rapides pour tout nom d'ulitisateur, le + cas échéant, vers l'ajout à un cercle, + vers son blog, vers des methodes choisies d'administateur, + vers ses réseaux sociaux, voir plus. + + * About.aspx: Implémente une page "à propos" + + * Test.aspx: Page de test: désolé pour le bruit, elle n'est + compilée qu'en mode `Debug` (elle n'est pas accessible en + production) + + * BasketController.cs: Les commandes sont fortement typée. + + * style.css: réécriture du thème clair + + * style.css: * implémente un classe css `clickme` pour attirer + l'oeil + sur le boutton de validation après la modification d'un champ + de formulaire. + * enlève tous les coins arrondis + * modifie la chasse de caractères (une seule utilisée pour le + moment) + * + + * style.css: * integre la référence à la feuille de style des + [animations](https://daneden.github.io/animate.css/) + * corrige des marges, alignements + * supprime ce qui reste de coin arrondi + * néttoye les définitions obsolètes + * définit la classe `username` + * corrige le survol à la suppression de tag + + + * FrontOfficeController.cs: renomme des methodes, refabriqué + pour s'adapter aux changements de l'API du workflow, + WIP propose les cercles utilisateurs pour l'ajout des profiles + préstataires aux cercles. + + * HomeController.cs: implémente une page "à propos" + + * T.cs: re-autorise le titre vide de page, au cas où ... car + ce n'est pas un véritable + défaut fonctionnel. + + * YavscHelpers.cs: Implemente un outil de presentation des + liens action traduits. Tous les liens action utilisent + maintenant cette nouvelle methode, + au profile de celle du framework `HtmlHelpers.ActionLink` + + * App.master: corrige l'usage du contrôle utilisateur des + cotes dans le cadre des cotes de billet. + + * AppAdmin.master: + * Index.aspx: + * Service.aspx: + * ProductCategory.aspx: traduction des liens action + + * NoLogin.master: * traduction des liens action + * suppression des liens de remerciement dans le bas de page, + cette information a été déplacée dans la page `/Home/Credits` + + * to-markdown.js: transforme maintenant les noeuds Html `div` + en paragraphes Markdown. + + * yavsc.hidefieldset.js: Le script règle la forme de la souris + au survol du bouton, + le cas échéant. + + * yavsc.js: nouvelle fonction javascript pour logger un objet + arbitraire. + + * yavsc.rate.js: Fixe la possibilité de mettre des cotes très + basses ou très hautes (reste encore un mieux à faire), + Affiche au survol des descriptions optionnelles de la cote. + + + * Title.aspx: + * UserPost.aspx: + * Edit.aspx: + * Index.aspx: + * Brand.aspx: + * Index.aspx: + * PostActions.ascx: + * TitleNotFound.aspx: + * Booking.aspx: + * Command.aspx: + * ChangePasswordSuccess.aspx: Traduction des liens action + + * Login.aspx: * Traduction des liens actionTraduction des + liens action + + * Profile.aspx: * Traduction des liens actionTraduction des + liens action + * utilisation de la classe css `mayhide` qui autorise + maintenant un champ d'entrées de formulaire à être plié/déplié + au click sur sa légende. + + * Admin.aspx: Traduction des liens actionTraduction des liens + actionTraduction des liens actionTraduction des liens + actionTraduction des liens actionTraduction des liens action + + * Backups.aspx: + * RoleList.aspx: + * UserList.aspx: + * Index.aspx: Traduction des liens actionTraduction des liens + action + + * Edit.aspx: * refabrication de la structure Html + * Traduction des liens actionTraduction des liens action + + + * Index.aspx: Simlpification des apperçus de blog + + * TagControl.ascx: refabrication pour simplifier + l'implémentation du contrôle utilisateur des tags + + * UserPosts.aspx: Traduction des liens action, et + simplification du listing de blog + + * Basket.aspx: Affiche les articles du panier de commandes + avec leur vue + dédiée à leur type (les commande sont maintenant fortement + typées) + + * Catalog.aspx: Traduction des liens action, correctin du lien + vers le produit + (cassé depuis une vielle refabrication des routes) + + * DoAnEstimate.aspx: refabrication de la vue de création du + devis: renommée depuis `Estimate` + + + * Performer.ascx: * un message supplementaire à l'absence de + compétence affichée par un préstataire + * des guillemets autour du commentaire du préstataire sur sa + compétence + * ajout du préstataire au cercles + + + * Performers.aspx: Décrit en détail les informations sur la + disponibilité d'un préstataire, + à la date demandée. + + * YourEstimates.aspx: renomage de cette page, pour préciser sa + fonction : Vos devis. + + * Contact.aspx: structure Html de la page de contact + + * Credits.aspx: Ajoute les remerciements aux communauté du + libre + + * Index.aspx: ne fait rien + + * Web.config: * import de `System.Transactions` + * mise à jour des credits libres + + * WebDeploy.targets: utilise les séparateurs de chemin vers + ficher à la POSIX, ne change rien pour ma config ... (TODO + tester sous WoinDose) + + * Yavsc.csproj: déploie des pages des scripts Javascript et + des images et feuilles de style en plus. + + * SiteSkills.aspx: renomage de cette page, pour préciser sa + fonction : les compétences sur ce site. + 2015-12-03 Paul Schneider * AccountController.cs: doc xml diff --git a/web/Controllers/FrontOfficeController.cs b/web/Controllers/FrontOfficeController.cs index aa459703..dd73d174 100644 --- a/web/Controllers/FrontOfficeController.cs +++ b/web/Controllers/FrontOfficeController.cs @@ -22,6 +22,7 @@ using Yavsc.Model.Google.Api; using System.Net; using System.Linq; using System.ComponentModel.DataAnnotations; +using Yavsc.Model.Circles; namespace Yavsc.Controllers { @@ -53,7 +54,7 @@ namespace Yavsc.Controllers /// Estimates released to this client /// [Authorize] - public ActionResult Estimates (string client) + public ActionResult YourEstimates (string client) { var u = Membership.GetUser (); if (u == null) // There was no redirection to any login page @@ -94,7 +95,7 @@ namespace Yavsc.Controllers /// Model. /// Submit. [Authorize] - public ActionResult Estimate (Estimate model, string submit) + public ActionResult DoAnEstimate (Estimate model, string submit) { string username = Membership.GetUser ().UserName; // Obsolete, set in master page @@ -238,14 +239,23 @@ namespace Yavsc.Controllers /// Collection. [HttpPost] [Authorize] - public ActionResult Command (FormCollection collection) + public ActionResult DoCommand (FormCollection collection) { try { // Add specified product command to the basket, // saves it in db - new Command (collection, HttpContext.Request.Files); - YavscHelpers.Notify (ViewData, LocalizedText.Item_added_to_basket); - return View (collection); + // + // * check the validity of this request + // by finding the "type" parameter between + // the allowed command types + // * instanciate the given command type, passing it the form data + // * Make the workflow register this command + // * Render the resulting basket + var cmd = Command.CreateCommand (collection, HttpContext.Request.Files); + ViewData["Commanded"] = cmd; + YavscHelpers.Notify (ViewData, + LocalizedText.Item_added_to_basket); + return View ("Basket",WorkFlowManager.GetCommands (User.Identity.Name)); } catch (Exception e) { YavscHelpers.Notify (ViewData, "Exception:" + e.Message); return View (collection); @@ -276,7 +286,7 @@ namespace Yavsc.Controllers /// Skills the specified model. /// [Authorize (Roles = "Admin")] - public ActionResult ActivitySkills (string MEACode) + public ActionResult SiteSkills (string MEACode) { SetMEACodeViewData (MEACode); var skills = SkillManager.FindSkill ("%",MEACode); @@ -404,6 +414,7 @@ namespace Yavsc.Controllers { // assert (model.MEACode!=null), since it's the required part of the route data var needs = SkillManager.FindSkill ("%", model.MEACode); + ViewBag.Activity = WorkFlowManager.GetActivity (model.MEACode); var specification = new List (); ViewData ["Needs"] = needs; if (model.Need != null) { @@ -438,6 +449,7 @@ namespace Yavsc.Controllers } } else result.Add (profile.CreateAvailability (model.PreferedDate, false)); + ViewData["Circles"] = CircleManager.ListAvailableCircles(); return View ("Performers", result.ToArray ()); } if (model.Need==null) { diff --git a/web/Controllers/HomeController.cs b/web/Controllers/HomeController.cs index 5b0ff763..2ea70861 100644 --- a/web/Controllers/HomeController.cs +++ b/web/Controllers/HomeController.cs @@ -109,7 +109,19 @@ namespace Yavsc.Controllers { return View (); } - + /// + /// About this instance. + /// + public ActionResult About () + { + return View (); + } + #if DEBUG + public ActionResult Test () + { + return View (); + } + #endif /// /// Contact the specified email, reason and body. /// diff --git a/web/Helpers/T.cs b/web/Helpers/T.cs index 897d75d1..adbe598d 100644 --- a/web/Helpers/T.cs +++ b/web/Helpers/T.cs @@ -35,8 +35,9 @@ namespace Yavsc.Helpers /// Text. public static IHtmlString Translate(this HtmlHelper helper, object text) { + // TODO notify admin from a null text here if (string.IsNullOrWhiteSpace ((string)text)) - throw new InvalidOperationException ("Empty text to translate"); + return null; // Just call the other one, to avoid having two copies (we don't use the HtmlHelper). return new MvcHtmlString(helper.Encode(GetString((string)text))); } diff --git a/web/Helpers/YavscHelpers.cs b/web/Helpers/YavscHelpers.cs index 46a750c0..277dee99 100644 --- a/web/Helpers/YavscHelpers.cs +++ b/web/Helpers/YavscHelpers.cs @@ -17,6 +17,8 @@ using System.Web.Mvc; using System.Text.RegularExpressions; using Yavsc.Model.Messaging; using System.Linq; +using System.Reflection; +using System.Web.Routing; namespace Yavsc.Helpers { @@ -377,7 +379,6 @@ namespace Yavsc.Helpers HtmlTextWriter writer = new HtmlTextWriter(strwr); // refer to the global style writer.AddAttribute ("rel", "stylesheet"); - writer.AddAttribute ("title", theme); writer.AddAttribute ("href", string.Format( "/App_Themes/{1}.css", @@ -407,6 +408,100 @@ namespace Yavsc.Helpers } return new MvcHtmlString(strwr.ToString()); } + private static object defaultHtmlAttributes = + new { @class="actionlink" }; + + /// + /// Translateds the action link. + /// + /// The action link. + /// Helper. + /// Action name. + /// Html attributes. + public static IHtmlString TranslatedActionLink (this HtmlHelper helper, + string actionLabel, object htmlAttributes = null) { + return TranslatedActionLink (helper, actionLabel, actionLabel, htmlAttributes); + } + /// + /// Translateds the action link. + /// + /// The action link. + /// Helper. + /// Action name. + /// Method. + /// Html attributes. + public static IHtmlString TranslatedActionLink (this HtmlHelper helper, + string actionLabel, string method, object htmlAttributes = null) { + return TranslatedActionLink (helper, + actionLabel, method, null, htmlAttributes = null); + + } + /// + /// Translateds the action link. + /// + /// The action link. + /// Helper. + /// Action name. + /// Method. + /// Controller. + /// Html attributes. + public static IHtmlString TranslatedActionLink (this HtmlHelper helper, + string actionLabel, string method, string controller, object htmlAttributes = null) { + return TranslatedActionLink (helper, actionLabel, method, controller, + new { controller = controller, action = actionLabel }, htmlAttributes); + } + /// + /// Translateds the action link. + /// + /// The action link. + /// Helper. + /// Action name. + /// Method. + /// Controller. + /// Routes. + /// Html attributes. + public static IHtmlString TranslatedActionLink (this HtmlHelper helper, + string actionLabel, string actionName, string controller, object routes, object htmlAttributes = null) { + + + if (htmlAttributes == null) + htmlAttributes = defaultHtmlAttributes; + IHtmlString text = T.Translate (helper, actionLabel); + StringWriter strwr = new StringWriter (); + HtmlTextWriter writer = new HtmlTextWriter(strwr); + + foreach (var ppt in htmlAttributes.GetType().GetProperties(BindingFlags.GetProperty| + BindingFlags.Public)) { + writer.AddAttribute(ppt.Name, ppt.GetValue(htmlAttributes).ToString()) + ; + } + writer.AddAttribute ("href", + UrlHelper.GenerateUrl ( + "Default", actionName, controller, + ( routes == null ) ? null : new RouteValueDictionary ( routes ) , + helper.RouteCollection, + helper.ViewContext.RequestContext, + false)); + writer.RenderBeginTag ("a"); + writer.Write (text); + writer.RenderEndTag (); + return new MvcHtmlString(strwr.ToString()); + + + } + + + public static IHtmlString TranslatedActionLink (this HtmlHelper helper, + string actionName, string method, object routes, object htmlAttributes = null) { + + string controllerName = helper.ViewContext.Controller.GetType ().Name; + if (controllerName.EndsWith ("Controller")) + controllerName = controllerName.Substring (0,controllerName.Length - 10); + return TranslatedActionLink (helper, actionName, method, + controllerName, routes, htmlAttributes); + } + + } } diff --git a/web/Models/App.master b/web/Models/App.master index 6e73b6ff..ebf089eb 100644 --- a/web/Models/App.master +++ b/web/Models/App.master @@ -24,7 +24,7 @@ Page.StyleSheetTheme = (string) Profile.UITheme; %> <%=Ajax.YaGlobalizationScript()%> @@ -36,10 +36,11 @@ var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>'; -
+ +
-

"> -<%=ViewState["orgtitle"]%> +

+<%=ViewState["orgtitle"]%> - "><%= YavscHelpers.SiteName %>

@@ -56,36 +57,39 @@ else {%> Yavsc.notice(<%=note.body%>, <%=note.click_action%>, <%=note.click_acti <% } %>
-