瀏覽代碼

Login-Seite beinahe fertiggestellt.

Arne Diekmann 8 年之前
父節點
當前提交
1e984ccd18
共有 29 個文件被更改,包括 395 次插入54 次删除
  1. 5 0
      GreenTree.Nachtragsmanagement.Core/Authentication/IUserHelper.cs
  2. 14 0
      GreenTree.Nachtragsmanagement.Core/Authentication/UserHelper.cs
  3. 39 0
      GreenTree.Nachtragsmanagement.Web/App_Start/BundleConfig.cs
  4. 二進制
      GreenTree.Nachtragsmanagement.Web/Content/Images/background-1-medium.jpg
  5. 二進制
      GreenTree.Nachtragsmanagement.Web/Content/Images/background-1-small.jpg
  6. 二進制
      GreenTree.Nachtragsmanagement.Web/Content/Images/background-2-small.png
  7. 二進制
      GreenTree.Nachtragsmanagement.Web/Content/Images/background-3-full.jpg
  8. 二進制
      GreenTree.Nachtragsmanagement.Web/Content/Images/background-4-full.jpg
  9. 二進制
      GreenTree.Nachtragsmanagement.Web/Content/Images/password-24.png
  10. 二進制
      GreenTree.Nachtragsmanagement.Web/Content/Images/password-32.png
  11. 二進制
      GreenTree.Nachtragsmanagement.Web/Content/Images/user-24.png
  12. 二進制
      GreenTree.Nachtragsmanagement.Web/Content/Images/user-32.png
  13. 78 0
      GreenTree.Nachtragsmanagement.Web/Content/global.css
  14. 58 0
      GreenTree.Nachtragsmanagement.Web/Content/login.css
  15. 41 0
      GreenTree.Nachtragsmanagement.Web/Controllers/GlobalController.cs
  16. 0 19
      GreenTree.Nachtragsmanagement.Web/Controllers/HomeController.cs
  17. 11 1
      GreenTree.Nachtragsmanagement.Web/Controllers/LoginController.cs
  18. 4 0
      GreenTree.Nachtragsmanagement.Web/Global.asax.cs
  19. 25 1
      GreenTree.Nachtragsmanagement.Web/GreenTree.Nachtragsmanagement.Web.csproj
  20. 15 0
      GreenTree.Nachtragsmanagement.Web/Models/Global/FooterModel.cs
  21. 2 0
      GreenTree.Nachtragsmanagement.Web/Models/Login/LoginModel.cs
  22. 1 5
      GreenTree.Nachtragsmanagement.Web/Views/Home/Index.cshtml
  23. 42 10
      GreenTree.Nachtragsmanagement.Web/Views/Login/Index.cshtml
  24. 25 0
      GreenTree.Nachtragsmanagement.Web/Views/Shared/_Footer.cshtml
  25. 25 15
      GreenTree.Nachtragsmanagement.Web/Views/Shared/_Layout.cshtml
  26. 1 0
      GreenTree.Nachtragsmanagement.Web/Views/Web.config
  27. 0 3
      GreenTree.Nachtragsmanagement.Web/Views/_ViewStart.cshtml
  28. 5 0
      GreenTree.Nachtragsmanagement.Web/Web.config
  29. 4 0
      GreenTree.Nachtragsmanagement.Web/packages.config

+ 5 - 0
GreenTree.Nachtragsmanagement.Core/Authentication/IUserHelper.cs

@@ -26,5 +26,10 @@ namespace GreenTree.Nachtragsmanagement.Core.Authentication
         /// <param name="user">The current authenticated user.</param>
         /// <param name="expirationDate">The cookie expiration date.</param>
         void ToCookies(User user, DateTime expirationDate);
+
+        /// <summary>
+        /// Clears the authentication cookie
+        /// </summary>
+        void ClearCookie();
     }
 }

+ 14 - 0
GreenTree.Nachtragsmanagement.Core/Authentication/UserHelper.cs

@@ -66,5 +66,19 @@ namespace GreenTree.Nachtragsmanagement.Core.Authentication
 
             HttpContext.Current.Response.Cookies.Set(authCookie);
         }
+
+        /// <summary>
+        /// Clears the authentication cookie
+        /// </summary>
+        public void ClearCookie()
+        {
+            if (HttpContext.Current == null || HttpContext.Current.Session == null) return;
+
+            var authCookie = HttpContext.Current.Request.Cookies["auth"];
+
+            authCookie.Expires = DateTime.Now.AddHours(-1);
+
+            HttpContext.Current.Response.Cookies.Set(authCookie);
+        }
     }
 }

+ 39 - 0
GreenTree.Nachtragsmanagement.Web/App_Start/BundleConfig.cs

@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Optimization;
+
+namespace GreenTree.Nachtragsmanagement.Web.App_Start
+{
+
+    public class BundleConfig
+    {
+        public static void RegisterBundles(BundleCollection bundles)
+        {
+            var jqueryBundle = new ScriptBundle("~/bundles/jquery");
+            jqueryBundle.Include("~/Scripts/jquery-1.11.3.min.js");
+            jqueryBundle.Include("~/Scripts/jquery-ui-1.11.4.min.js");
+            jqueryBundle.Include("~/Scripts/jquery.unobtrusive-ajax.min.js");
+            jqueryBundle.Include("~/Scripts/jquery.validate.min.js");
+
+            var globalizeBundle = new ScriptBundle("~/bundles/globalize");
+            globalizeBundle.Include("~/Scripts/globalize.currency.js");
+            globalizeBundle.Include("~/Scripts/globalize.date.js");
+            globalizeBundle.Include("~/Scripts/globalize.js");
+            globalizeBundle.Include("~/Scripts/globalize.message.js");
+            globalizeBundle.Include("~/Scripts/globalize.number.js");
+
+            var knockoutBundle = new ScriptBundle("~/bundles/knockout");
+            knockoutBundle.Include("~/Scripts/knockout-3.3.0.js");
+
+            var modernizrBundle = new ScriptBundle("~/bundles/modernizr");
+            knockoutBundle.Include("~/Scripts/modernizr-2.6.2.js");
+
+            bundles.Add(jqueryBundle);
+            bundles.Add(globalizeBundle);
+            bundles.Add(knockoutBundle);
+            bundles.Add(modernizrBundle);
+        }
+    }
+}

二進制
GreenTree.Nachtragsmanagement.Web/Content/Images/background-1-medium.jpg


二進制
GreenTree.Nachtragsmanagement.Web/Content/Images/background-1-small.jpg


二進制
GreenTree.Nachtragsmanagement.Web/Content/Images/background-2-small.png


二進制
GreenTree.Nachtragsmanagement.Web/Content/Images/background-3-full.jpg


二進制
GreenTree.Nachtragsmanagement.Web/Content/Images/background-4-full.jpg


二進制
GreenTree.Nachtragsmanagement.Web/Content/Images/password-24.png


二進制
GreenTree.Nachtragsmanagement.Web/Content/Images/password-32.png


二進制
GreenTree.Nachtragsmanagement.Web/Content/Images/user-24.png


二進制
GreenTree.Nachtragsmanagement.Web/Content/Images/user-32.png


+ 78 - 0
GreenTree.Nachtragsmanagement.Web/Content/global.css

@@ -0,0 +1,78 @@
+html {
+    font: 14px "Roboto Regular", Helvetica, "Droid Sans", Tahoma, Geneva, sans-serif;
+    background: url(Images/background-2-small.png) repeat #F7F7F7;
+    padding: 0;
+}
+
+h1, h2, h3, h4, h5, h6 {
+    color: #009688;
+}
+
+.globalFooter {
+    overflow: auto;
+    min-height: 36px;
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    color: white;
+    line-height: 34px;
+    -webkit-box-shadow: 0px -7px 12px -8px rgba(0,0,0,0.75);
+    -moz-box-shadow: 0px -7px 12px -8px rgba(0,0,0,0.75);
+    box-shadow: 0px -7px 12px -8px rgba(0,0,0,0.75);
+    border-top: 1px solid #009688;
+    /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#c0c0c0+0,c0c0c0+100&0.8+0,0.8+100 */
+    background: -moz-linear-gradient(top, rgba(192,192,192,0.5) 0%, rgba(192,192,192,0.5) 100%); /* FF3.6-15 */
+    background: -webkit-linear-gradient(top, rgba(192,192,192,0.5) 0%,rgba(192,192,192,0.5) 100%); /* Chrome10-25,Safari5.1-6 */
+    background: linear-gradient(to bottom, rgba(192,192,192,0.5) 0%,rgba(192,192,192,0.5) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
+    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ccc0c0c0', endColorstr='#ccc0c0c0',GradientType=0 ); /* IE6-9 */
+}
+
+.globalFooter .seperator {
+    width: 1px;
+    background: #009688;
+    height: 16px;
+    float: left;
+    margin: 8px 16px;
+}
+
+.globalFooter .innerFooter {
+    padding: 1px 20px;
+    width: auto;
+}
+
+.innerFooter .logout {
+    float: left;
+}
+
+.innerFooter .userInfo {
+    float: left;
+}
+
+.innerFooter .versionInfo {
+    float: right;
+}
+
+.devExAutoWidth {
+    width: 100%;
+}
+
+.devExFullWidth {
+    width: 100%;
+}
+
+.devExNearFullWidth {
+    width: 80%;
+}
+
+.devExFontLarge {
+    font-size: 21px;
+}
+
+.devExFloatLeft {
+    float: left;
+}
+
+.devExCenter {
+    margin: 0 auto;
+}

+ 58 - 0
GreenTree.Nachtragsmanagement.Web/Content/login.css

@@ -0,0 +1,58 @@
+html {
+    background: url(Images/background-4-full.jpg) #F7F7F7;
+    background-size: cover;
+    padding: 0;
+}
+
+.contrastText {
+    color: white;
+    text-shadow: 1px 1px 2px rgba(150, 150, 150, 1);
+}
+
+.outerCenterWrapper {
+    margin: 200px auto 0;
+    width: 400px;
+    font-size: 22px;
+    border: 1px solid #009688;
+    padding: 24px;
+    text-align: center;
+    /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#ffffff+0,ffffff+100&0.8+1,0.8+100 */
+    background: -moz-linear-gradient(top, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0.8) 1%, rgba(255,255,255,0.8) 100%); /* FF3.6-15 */
+    background: -webkit-linear-gradient(top, rgba(255,255,255,0.8) 0%,rgba(255,255,255,0.8) 1%,rgba(255,255,255,0.8) 100%); /* Chrome10-25,Safari5.1-6 */
+    background: linear-gradient(to bottom, rgba(255,255,255,0.8) 0%,rgba(255,255,255,0.8) 1%,rgba(255,255,255,0.8) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
+    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ccffffff', endColorstr='#ccffffff',GradientType=0 ); /* IE6-9 */
+    -webkit-box-shadow: 0px 0px 12px 0px rgba(0,0,0,0.75);
+    -moz-box-shadow: 0px 0px 12px 0px rgba(0,0,0,0.75);
+    box-shadow: 0px 0px 12px 0px rgba(0,0,0,0.75);
+    border-radius: 8px 8px 8px 8px;
+    -moz-border-radius: 8px 8px 8px 8px;
+    -webkit-border-radius: 8px 8px 8px 8px;
+    border: 0px solid #000000;
+}
+
+.outerCenterWrapper h2 {
+    font-size: 1.2em;
+    text-transform: uppercase;
+}
+
+.innerCenterWrapper {
+    margin: 0 auto;
+    width: 260px;
+    opacity: 1.0;
+}
+
+.innerCenterWrapper h4 {
+    font-weight: normal;
+}
+
+.fieldContainer {
+    width: 100%;
+    overflow: auto;
+    margin: 16px 0;
+}
+
+.fieldContainer > img {
+    float: left;
+    margin-top: 4px;
+    margin-right: 12px;
+}

+ 41 - 0
GreenTree.Nachtragsmanagement.Web/Controllers/GlobalController.cs

@@ -0,0 +1,41 @@
+using GreenTree.Nachtragsmanagement.Core.Authentication;
+using GreenTree.Nachtragsmanagement.Web.Models.Global;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Mvc;
+
+namespace GreenTree.Nachtragsmanagement.Web.Controllers
+{
+    public class GlobalController : Controller
+    {
+        private readonly IUserHelper _userHelper;
+
+        public GlobalController(
+            IUserHelper userHelper)
+        {
+            _userHelper = userHelper;
+        }
+
+        /// <summary>
+        /// Represents the global Footer
+        /// </summary>
+        public ActionResult Footer()
+        {
+            var currentUser = _userHelper.FromCookies();
+
+            if (currentUser == null)
+                return View("~/Views/Shared/_Footer.cshtml", null);
+
+            var footerModel = new FooterModel
+            {
+                CustomNumber = currentUser.CustomId,
+                Forename = currentUser.Forename,
+                Lastname = currentUser.Lastname
+            };
+
+            return View("~/Views/Shared/_Footer.cshtml", footerModel);
+        }
+    }
+}

+ 0 - 19
GreenTree.Nachtragsmanagement.Web/Controllers/HomeController.cs

@@ -45,25 +45,6 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
             return View("~/Views/Home/Index.cshtml");
         }
 
-        public ActionResult Relations()
-        {
-            var users = _userService.GetAllUsers();
-
-            var relations = _dbRelationService.GetRelations(3, DbRelationFormat.Json);
-
-            var model = new DbRelationModel
-            {
-                UserJson = relations[0],
-                DeviationJson = relations[1],
-                SiteJson = relations[2],
-                AppendixJson = relations[3]
-            };
-
-            var configSection = _configurationService.GetCurrentConfiguration();
-
-            return View("~/Views/Home/Relations.cshtml", model);
-        }
-
         public ActionResult Plugins()
         {
             var model = new PluginModel

+ 11 - 1
GreenTree.Nachtragsmanagement.Web/Controllers/LoginController.cs

@@ -47,9 +47,19 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
             if (!String.Equals(user.Password, password, StringComparison.InvariantCulture))
                 return Index();
 
-            _userHelper.ToCookies(user, DateTime.Now.AddHours(2));
+            if (model.IsPermanent)
+                _userHelper.ToCookies(user, DateTime.MaxValue);
+            else
+                _userHelper.ToCookies(user, DateTime.Now.AddHours(2));
 
             return RedirectToAction("Index", "Home");
         }
+
+        public ActionResult Logout()
+        {
+            _userHelper.ClearCookie();
+
+            return RedirectToAction("Index", "Login");
+        }
     }
 }

+ 4 - 0
GreenTree.Nachtragsmanagement.Web/Global.asax.cs

@@ -11,6 +11,8 @@ using System.Reflection;
 using GreenTree.Nachtragsmanagement.Core;
 using Autofac;
 using GreenTree.Nachtragsmanagement.Web.Framework.Mvc.Routes;
+using GreenTree.Nachtragsmanagement.Web.App_Start;
+using System.Web.Optimization;
 
 namespace GreenTree.Nachtragsmanagement.Web
 {
@@ -26,6 +28,8 @@ namespace GreenTree.Nachtragsmanagement.Web
             GlobalConfiguration.Configure(WebApiConfig.Register);
             FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
             RouteConfig.RegisterRoutes(RouteTable.Routes);
+
+            BundleConfig.RegisterBundles(BundleTable.Bundles);
             
             ModelBinders.Binders.DefaultBinder = new DevExpress.Web.Mvc.DevExpressEditorsBinder();
 

+ 25 - 1
GreenTree.Nachtragsmanagement.Web/GreenTree.Nachtragsmanagement.Web.csproj

@@ -44,6 +44,9 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="Antlr3.Runtime, Version=3.4.1.9004, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL">
+      <HintPath>..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll</HintPath>
+    </Reference>
     <Reference Include="Autofac, Version=4.0.1.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
       <HintPath>..\packages\Autofac.4.0.1\lib\net45\Autofac.dll</HintPath>
     </Reference>
@@ -86,6 +89,9 @@
     <Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
       <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>
     </Reference>
+    <Reference Include="System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll</HintPath>
+    </Reference>
     <Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
       <HintPath>..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll</HintPath>
     </Reference>
@@ -127,13 +133,27 @@
     <Reference Include="DevExpress.Xpo.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
     <Reference Include="DevExpress.XtraCharts.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
     <Reference Include="DevExpress.XtraGauges.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
+    <Reference Include="WebGrease, Version=1.5.2.14234, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <HintPath>..\packages\WebGrease.1.5.2\lib\WebGrease.dll</HintPath>
+    </Reference>
     <Reference Include="WebMatrix.Data, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
       <HintPath>..\packages\Microsoft.AspNet.WebPages.Data.3.2.3\lib\net45\WebMatrix.Data.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
+    <Content Include="Content\global.css" />
+    <Content Include="Content\Images\background-1-medium.jpg" />
+    <Content Include="Content\Images\background-1-small.jpg" />
+    <Content Include="Content\Images\background-2-small.png" />
+    <Content Include="Content\Images\background-3-full.jpg" />
+    <Content Include="Content\Images\background-4-full.jpg" />
+    <Content Include="Content\Images\user-32.png" />
+    <Content Include="Content\Images\password-32.png" />
+    <Content Include="Content\Images\password-24.png" />
+    <Content Include="Content\Images\user-24.png" />
     <Content Include="Content\jquery-ui.css" />
     <Content Include="Content\jquery-ui.min.css" />
+    <Content Include="Content\login.css" />
     <Content Include="Global.asax" />
     <Content Include="Scripts\ace.js" />
     <Content Include="Scripts\cldr.event.js" />
@@ -177,11 +197,11 @@
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
     <Content Include="Views\Shared\_Layout.cshtml" />
-    <Content Include="Views\_ViewStart.cshtml" />
     <Content Include="Views\Home\Relations.cshtml" />
     <Content Include="Views\Home\Plugins.cshtml" />
     <Content Include="Views\Shared\_HeaderNavBar.cshtml" />
     <Content Include="Views\Login\Index.cshtml" />
+    <Content Include="Views\Shared\_Footer.cshtml" />
     <None Include="Web.Debug.config">
       <DependentUpon>Web.config</DependentUpon>
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
@@ -192,15 +212,18 @@
     </None>
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="App_Start\BundleConfig.cs" />
     <Compile Include="App_Start\FilterConfig.cs" />
     <Compile Include="App_Start\RouteConfig.cs" />
     <Compile Include="App_Start\WebApiConfig.cs" />
     <Compile Include="Controllers\AuthController.cs" />
+    <Compile Include="Controllers\GlobalController.cs" />
     <Compile Include="Controllers\HomeController.cs" />
     <Compile Include="Controllers\LoginController.cs" />
     <Compile Include="Global.asax.cs">
       <DependentUpon>Global.asax</DependentUpon>
     </Compile>
+    <Compile Include="Models\Global\FooterModel.cs" />
     <Compile Include="Models\Login\LoginModel.cs" />
     <Compile Include="Models\Test\DbRelationModel.cs" />
     <Compile Include="Models\Test\PluginModel.cs" />
@@ -210,6 +233,7 @@
   <ItemGroup>
     <Folder Include="App_Data\" />
     <Folder Include="Views\Auth\" />
+    <Folder Include="Views\Global\" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\GreenTree.Nachtragsmanagement.Core\GreenTree.Nachtragsmanagement.Core.csproj">

+ 15 - 0
GreenTree.Nachtragsmanagement.Web/Models/Global/FooterModel.cs

@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+namespace GreenTree.Nachtragsmanagement.Web.Models.Global
+{
+    public class FooterModel
+    {
+        public int CustomNumber { get; set; }
+        public string Forename { get; set; }
+        public string Lastname { get; set; }
+        public int RoleId { get; set; }
+    }
+}

+ 2 - 0
GreenTree.Nachtragsmanagement.Web/Models/Login/LoginModel.cs

@@ -9,5 +9,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Models.Login
     {
         public string Username { get; set; }
         public string Password { get; set; }
+
+        public bool IsPermanent { get; set; }
     }
 }

+ 1 - 5
GreenTree.Nachtragsmanagement.Web/Views/Home/Index.cshtml

@@ -1,8 +1,4 @@
 @{
     ViewBag.Title = "Index";
     Layout = "~/Views/Shared/_Layout.cshtml";
-}
-
-<h2>Home - Funktionen</h2>
-
-@Html.Partial("~/Views/Shared/_HeaderNavBar.cshtml")
+}

+ 42 - 10
GreenTree.Nachtragsmanagement.Web/Views/Login/Index.cshtml

@@ -1,17 +1,49 @@
 @{
-    ViewBag.Title = "Index";
+    ViewBag.Title = "Login";
     Layout = "~/Views/Shared/_Layout.cshtml";
 }
 
 @model GreenTree.Nachtragsmanagement.Web.Models.Login.LoginModel
 
-<h2>Login</h2>
+<link rel="stylesheet" type="text/css" href="~/Content/login.css" />
 
-@using (Html.BeginForm())
-{
-	<h5>Benutzername:</h5>
-	@Html.EditorFor(m => m.Username)
-	<h5>Passwort</h5>
-	@Html.PasswordFor(m => m.Password)
-	<input type="submit" value="Login" />
-}
+<div class="outerCenterWrapper">
+	<h2>Nachtragsmanagement 2.0</h2>
+	<div class="innerCenterWrapper">
+		<h4>Anmeldung</h4>
+		@using (Html.BeginForm())
+		{
+			<div class="fieldContainer">
+				<img src="~/Content/Images/user-32.png" />
+				@Html.DevExpress().TextBoxFor(m => m.Username, s =>
+			    {
+				    s.Properties.NullText = "Benutzer";
+				    s.ControlStyle.CssClass += "devExNearFullWidth devExFontLarge devExFloatLeft";
+			    }).GetHtml()
+			</div>
+			<div class="fieldContainer">
+				<img src="~/Content/Images/password-32.png" />
+				@Html.DevExpress().TextBoxFor(m => m.Password, s =>
+				{
+					s.Properties.NullText = "Passwort";
+					s.Properties.Password = true;
+					s.ControlStyle.CssClass += "devExNearFullWidth devExFontLarge devExFloatLeft";
+				}).GetHtml()
+			</div>
+			@Html.DevExpress().CheckBoxFor(m => m.IsPermanent, s =>
+			{
+				s.Text = "Anmeldung speichern";
+				s.ControlStyle.CssClass += "devExCenter";
+			}).GetHtml()
+			<br />
+			@Html.DevExpress().Button(s =>
+		    {
+			    s.Name = "devButtonLogin";
+			    s.UseSubmitBehavior = true;
+			    s.Text = "Login";
+				s.Width = new Unit(100, UnitType.Percentage);
+				s.ControlStyle.CssClass += "devExFontLarge";
+		    }).GetHtml()
+		}
+	</div>
+</div>

+ 25 - 0
GreenTree.Nachtragsmanagement.Web/Views/Shared/_Footer.cshtml

@@ -0,0 +1,25 @@
+@model GreenTree.Nachtragsmanagement.Web.Models.Global.FooterModel
+
+<div class="globalFooter">
+	<div class="innerFooter">
+			@if (Model != null)
+			{
+				<div class="logout">
+					@Html.DevExpress().Button(s =>
+				    {
+					    s.Name = "devButtonLogout";
+					    s.RenderMode = ButtonRenderMode.Link;
+					    s.Text = "Ausloggen";
+					}).GetHtml()
+				</div>
+				<div class="seperator">
+				</div>
+				<span class="userInfo">
+					@String.Format("{0}, {1}", Model.Lastname, Model.Forename)
+				</span>
+			}
+		<span class="versionInfo">
+			@String.Format("v{0}", GreenTree.Nachtragsmanagement.Core.AppendixVersion.CurrentVersion)
+		</span>
+	</div>
+</div>

+ 25 - 15
GreenTree.Nachtragsmanagement.Web/Views/Shared/_Layout.cshtml

@@ -1,26 +1,36 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
 
 <html>
 <head>
     <meta charset="UTF-8" />
+
     <title>@ViewBag.Title</title>
 
-    @Html.DevExpress().GetStyleSheets( 
-        new StyleSheet { ExtensionSuite = ExtensionSuite.NavigationAndLayout },
-        new StyleSheet { ExtensionSuite = ExtensionSuite.Editors },
-        new StyleSheet { ExtensionSuite = ExtensionSuite.Report },
-        new StyleSheet { ExtensionSuite = ExtensionSuite.GridView }
-    )
-    @Html.DevExpress().GetScripts( 
-        new Script { ExtensionSuite = ExtensionSuite.NavigationAndLayout },
-        new Script { ExtensionSuite = ExtensionSuite.Editors },
-        new Script { ExtensionSuite = ExtensionSuite.Report },
-        new Script { ExtensionSuite = ExtensionSuite.GridView }
-    )
-    
+    @Html.DevExpress().GetStyleSheets(
+		new StyleSheet { ExtensionSuite = ExtensionSuite.NavigationAndLayout },
+		new StyleSheet { ExtensionSuite = ExtensionSuite.Editors },
+		new StyleSheet { ExtensionSuite = ExtensionSuite.Report },
+		new StyleSheet { ExtensionSuite = ExtensionSuite.GridView }
+	)
+    @Html.DevExpress().GetScripts(
+		new Script { ExtensionSuite = ExtensionSuite.NavigationAndLayout },
+		new Script { ExtensionSuite = ExtensionSuite.Editors },
+		new Script { ExtensionSuite = ExtensionSuite.Report },
+		new Script { ExtensionSuite = ExtensionSuite.GridView }
+	)
+
+	@*@System.Web.Optimization.Scripts.Render("~/bundles/jquery")
+	@System.Web.Optimization.Scripts.Render("~/bundles/globalize")
+	@System.Web.Optimization.Scripts.Render("~/bundles/knockout")
+	@System.Web.Optimization.Scripts.Render("~/bundles/modernizr")*@
+
+	<link rel="stylesheet" type="text/css" href="~/Content/global.css" />
 </head>
 
 <body>
-    @RenderBody()
+	<div class="globalContent">
+		@RenderBody()
+	</div>
+	@{ Html.RenderAction("Footer", "Global"); }
 </body>
 </html>

+ 1 - 0
GreenTree.Nachtragsmanagement.Web/Views/Web.config

@@ -13,6 +13,7 @@
         <add namespace="System.Web.Mvc.Ajax" />
         <add namespace="System.Web.Mvc.Html" />
         <add namespace="System.Web.Routing" />
+        <add namespace="System.Web.Optimization" />
         <add namespace="System.Web.UI.WebControls" />
         <add namespace="DevExpress.Utils" />
         <add namespace="DevExpress.Web.ASPxThemes" />

+ 0 - 3
GreenTree.Nachtragsmanagement.Web/Views/_ViewStart.cshtml

@@ -1,3 +0,0 @@
-@{
-    Layout = "~/Views/Shared/_Layout.cshtml";
-}

+ 5 - 0
GreenTree.Nachtragsmanagement.Web/Web.config

@@ -71,6 +71,7 @@
         <add namespace="System.Web.Mvc.Html" />
         <add namespace="System.Web.Routing" />
         <add namespace="System.Web.WebPages" />
+        <add namespace="System.Web.Optimization" />
         <add namespace="System.Web.UI.WebControls" />
         <add namespace="DevExpress.Utils" />
         <add namespace="DevExpress.Web.ASPxThemes" />
@@ -126,6 +127,10 @@
         <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
         <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
       </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
+      </dependentAssembly>
     </assemblyBinding>
   </runtime>
   <devExpress>

+ 4 - 0
GreenTree.Nachtragsmanagement.Web/packages.config

@@ -1,11 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <packages>
+  <package id="Antlr" version="3.4.1.9004" targetFramework="net452" />
   <package id="Autofac" version="4.0.1" targetFramework="net452" />
   <package id="EntityFramework" version="6.1.3" targetFramework="net452" />
   <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net452" />
   <package id="Microsoft.AspNet.Mvc.de" version="5.2.3" targetFramework="net452" />
   <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net452" />
   <package id="Microsoft.AspNet.Razor.de" version="3.2.3" targetFramework="net452" />
+  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net452" />
   <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net452" />
   <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net452" />
   <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net452" />
@@ -14,4 +16,6 @@
   <package id="Microsoft.AspNet.WebPages.Data" version="3.2.3" targetFramework="net452" />
   <package id="Microsoft.AspNet.WebPages.de" version="3.2.3" targetFramework="net452" />
   <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net452" />
+  <package id="Newtonsoft.Json" version="10.0.3" targetFramework="net452" />
+  <package id="WebGrease" version="1.5.2" targetFramework="net452" />
 </packages>