Permalink
Browse files

Initial Commit for Twitter Bootstrap 2.0

  • Loading branch information...
0 parents commit a1ce85154045ee8e5adaf2d8b6bb1a10d15b1148 @andrewtobin committed Feb 2, 2012
Showing with 51,135 additions and 0 deletions.
  1. +25 −0 .gitignore
  2. +20 −0 BlankMVCProject/BlankMVCProject.sln
  3. +246 −0 BlankMVCProject/BlankMVCProject/BlankMVCProject.csproj
  4. +225 −0 BlankMVCProject/BlankMVCProject/CodeTemplates/AddView/CSHTML/Create.tt
  5. +207 −0 BlankMVCProject/BlankMVCProject/CodeTemplates/AddView/CSHTML/Delete.tt
  6. +211 −0 BlankMVCProject/BlankMVCProject/CodeTemplates/AddView/CSHTML/Details.tt
  7. +232 −0 BlankMVCProject/BlankMVCProject/CodeTemplates/AddView/CSHTML/Edit.tt
  8. +69 −0 BlankMVCProject/BlankMVCProject/CodeTemplates/AddView/CSHTML/Empty.tt
  9. +240 −0 BlankMVCProject/BlankMVCProject/CodeTemplates/AddView/CSHTML/List.tt
  10. +324 −0 BlankMVCProject/BlankMVCProject/Content/Site.css
  11. +34 −0 BlankMVCProject/BlankMVCProject/Content/bootstrap-overrides.css
  12. +3,363 −0 BlankMVCProject/BlankMVCProject/Content/bootstrap.css
  13. +610 −0 BlankMVCProject/BlankMVCProject/Content/bootstrap.min.css
  14. +3 −0 BlankMVCProject/BlankMVCProject/Content/bootstrap.min.responsive.css
  15. +567 −0 BlankMVCProject/BlankMVCProject/Content/bootstrap.responsive.css
  16. BIN BlankMVCProject/BlankMVCProject/Content/images/glyphicons-halflings-white.png
  17. BIN BlankMVCProject/BlankMVCProject/Content/images/glyphicons-halflings.png
  18. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png
  19. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png
  20. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png
  21. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png
  22. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png
  23. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png
  24. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png
  25. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png
  26. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/images/ui-icons_222222_256x240.png
  27. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/images/ui-icons_2e83ff_256x240.png
  28. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/images/ui-icons_454545_256x240.png
  29. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/images/ui-icons_888888_256x240.png
  30. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/images/ui-icons_cd0a0a_256x240.png
  31. +563 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery-ui.css
  32. +19 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery.ui.accordion.css
  33. +11 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery.ui.all.css
  34. +53 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery.ui.autocomplete.css
  35. +21 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery.ui.base.css
  36. +38 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery.ui.button.css
  37. +38 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery.ui.core.css
  38. +68 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery.ui.datepicker.css
  39. +21 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery.ui.dialog.css
  40. +11 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery.ui.progressbar.css
  41. +20 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery.ui.resizable.css
  42. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery.ui.selectable.css
  43. +24 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery.ui.slider.css
  44. +18 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery.ui.tabs.css
  45. +247 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/jquery.ui.theme.css
  46. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png
  47. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png
  48. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png
  49. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png
  50. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png
  51. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/minified/images/ui-bg_glass_75_e6e6e6_1x400.png
  52. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/minified/images/ui-bg_glass_95_fef1ec_1x400.png
  53. BIN ...ject/BlankMVCProject/Content/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png
  54. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/minified/images/ui-icons_222222_256x240.png
  55. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/minified/images/ui-icons_2e83ff_256x240.png
  56. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/minified/images/ui-icons_454545_256x240.png
  57. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/minified/images/ui-icons_888888_256x240.png
  58. BIN BlankMVCProject/BlankMVCProject/Content/themes/base/minified/images/ui-icons_cd0a0a_256x240.png
  59. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery-ui.min.css
  60. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery.ui.accordion.min.css
  61. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery.ui.all.min.css
  62. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery.ui.autocomplete.min.css
  63. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery.ui.base.min.css
  64. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery.ui.button.min.css
  65. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery.ui.core.min.css
  66. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery.ui.datepicker.min.css
  67. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery.ui.dialog.min.css
  68. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery.ui.progressbar.min.css
  69. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery.ui.resizable.min.css
  70. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery.ui.selectable.min.css
  71. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery.ui.slider.min.css
  72. +10 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery.ui.tabs.min.css
  73. +12 −0 BlankMVCProject/BlankMVCProject/Content/themes/base/minified/jquery.ui.theme.min.css
  74. +193 −0 BlankMVCProject/BlankMVCProject/Controllers/AccountController.cs
  75. +23 −0 BlankMVCProject/BlankMVCProject/Controllers/HomeController.cs
  76. +1 −0 BlankMVCProject/BlankMVCProject/Global.asax
  77. +40 −0 BlankMVCProject/BlankMVCProject/Global.asax.cs
  78. +67 −0 BlankMVCProject/BlankMVCProject/Models/AccountModels.cs
  79. +35 −0 BlankMVCProject/BlankMVCProject/Properties/AssemblyInfo.cs
  80. +1 −0 BlankMVCProject/BlankMVCProject/README.jQuery.vsdoc.txt
  81. +7,117 −0 BlankMVCProject/BlankMVCProject/Scripts/MicrosoftAjax.debug.js
  82. +6 −0 BlankMVCProject/BlankMVCProject/Scripts/MicrosoftAjax.js
  83. +408 −0 BlankMVCProject/BlankMVCProject/Scripts/MicrosoftMvcAjax.debug.js
  84. +25 −0 BlankMVCProject/BlankMVCProject/Scripts/MicrosoftMvcAjax.js
  85. +883 −0 BlankMVCProject/BlankMVCProject/Scripts/MicrosoftMvcValidation.debug.js
  86. +55 −0 BlankMVCProject/BlankMVCProject/Scripts/MicrosoftMvcValidation.js
  87. +1,722 −0 BlankMVCProject/BlankMVCProject/Scripts/bootstrap.js
  88. +1 −0 BlankMVCProject/BlankMVCProject/Scripts/bootstrap.min.js
  89. +7,153 −0 BlankMVCProject/BlankMVCProject/Scripts/jquery-1.7.1-vsdoc.js
  90. +9,266 −0 BlankMVCProject/BlankMVCProject/Scripts/jquery-1.7.1.js
  91. +4 −0 BlankMVCProject/BlankMVCProject/Scripts/jquery-1.7.1.min.js
  92. +11,827 −0 BlankMVCProject/BlankMVCProject/Scripts/jquery-ui-1.8.17.js
  93. +15 −0 BlankMVCProject/BlankMVCProject/Scripts/jquery-ui-1.8.17.min.js
  94. +165 −0 BlankMVCProject/BlankMVCProject/Scripts/jquery.unobtrusive-ajax.js
  95. +5 −0 BlankMVCProject/BlankMVCProject/Scripts/jquery.unobtrusive-ajax.min.js
  96. +1,291 −0 BlankMVCProject/BlankMVCProject/Scripts/jquery.validate-vsdoc.js
  97. +1,188 −0 BlankMVCProject/BlankMVCProject/Scripts/jquery.validate.js
  98. +51 −0 BlankMVCProject/BlankMVCProject/Scripts/jquery.validate.min.js
  99. +319 −0 BlankMVCProject/BlankMVCProject/Scripts/jquery.validate.unobtrusive.js
  100. +5 −0 BlankMVCProject/BlankMVCProject/Scripts/jquery.validate.unobtrusive.min.js
  101. +1,116 −0 BlankMVCProject/BlankMVCProject/Scripts/modernizr-2.0.6-development-only.js
  102. +50 −0 BlankMVCProject/BlankMVCProject/Views/Account/ChangePassword.cshtml
  103. +10 −0 BlankMVCProject/BlankMVCProject/Views/Account/ChangePasswordSuccess.cshtml
  104. +49 −0 BlankMVCProject/BlankMVCProject/Views/Account/LogOn.cshtml
  105. +57 −0 BlankMVCProject/BlankMVCProject/Views/Account/Register.cshtml
  106. +10 −0 BlankMVCProject/BlankMVCProject/Views/Home/About.cshtml
  107. +10 −0 BlankMVCProject/BlankMVCProject/Views/Home/Index.cshtml
  108. +9 −0 BlankMVCProject/BlankMVCProject/Views/Shared/Error.cshtml
  109. +34 −0 BlankMVCProject/BlankMVCProject/Views/Shared/_Layout.cshtml
  110. +16 −0 BlankMVCProject/BlankMVCProject/Views/Shared/_LogOnPartial.cshtml
  111. +58 −0 BlankMVCProject/BlankMVCProject/Views/Web.config
  112. +3 −0 BlankMVCProject/BlankMVCProject/Views/_ViewStart.cshtml
  113. +30 −0 BlankMVCProject/BlankMVCProject/Web.Debug.config
  114. +31 −0 BlankMVCProject/BlankMVCProject/Web.Release.config
  115. +85 −0 BlankMVCProject/BlankMVCProject/Web.config
  116. +11 −0 BlankMVCProject/BlankMVCProject/packages.config
  117. BIN Nuget/MahApps.Twitter.Bootstrap.2.0.1.nupkg
25 .gitignore
@@ -0,0 +1,25 @@
+[Oo]bj/
+[Bb]in/
+*.user
+/TestResults
+*.vspscc
+*.vssscc
+deploy
+deploy/*
+*.suo
+*.cache
+packages/
+msbuild.log
+artifacts/log
+artifacts/
+post-build*
+_ReSharper.*
+deploy-to-ec2*
+*.cachefile
+
+#OS junk files
+[Tt]humbs.db
+*.DS_Store
+
+#Monotouch garbage
+*.pidb
20 BlankMVCProject/BlankMVCProject.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlankMVCProject", "BlankMVCProject\BlankMVCProject.csproj", "{4A957ECA-37F7-4308-A923-195A152EA351}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {4A957ECA-37F7-4308-A923-195A152EA351}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4A957ECA-37F7-4308-A923-195A152EA351}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4A957ECA-37F7-4308-A923-195A152EA351}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4A957ECA-37F7-4308-A923-195A152EA351}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
246 BlankMVCProject/BlankMVCProject/BlankMVCProject.csproj
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>
+ </ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{4A957ECA-37F7-4308-A923-195A152EA351}</ProjectGuid>
+ <ProjectTypeGuids>{E53F8FEA-EAE0-44A6-8774-FFD645390401};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>BlankMVCProject</RootNamespace>
+ <AssemblyName>BlankMVCProject</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <MvcBuildViews>false</MvcBuildViews>
+ <UseIISExpress>false</UseIISExpress>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="EntityFramework">
+ <HintPath>..\packages\EntityFramework.4.2.0.0\lib\net40\EntityFramework.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data.Entity" />
+ <Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
+ <Reference Include="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
+ <Reference Include="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
+ <Reference Include="System" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="System.Web.DynamicData" />
+ <Reference Include="System.Web.Entity" />
+ <Reference Include="System.Web.ApplicationServices" />
+ <Reference Include="System.ComponentModel.DataAnnotations" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Web" />
+ <Reference Include="System.Web.Extensions" />
+ <Reference Include="System.Web.Abstractions" />
+ <Reference Include="System.Web.Routing" />
+ <Reference Include="System.Xml" />
+ <Reference Include="System.Configuration" />
+ <Reference Include="System.Web.Services" />
+ <Reference Include="System.EnterpriseServices" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Controllers\AccountController.cs" />
+ <Compile Include="Controllers\HomeController.cs" />
+ <Compile Include="Global.asax.cs">
+ <DependentUpon>Global.asax</DependentUpon>
+ </Compile>
+ <Compile Include="Models\AccountModels.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Content\bootstrap-overrides.css" />
+ <Content Include="Content\bootstrap.css" />
+ <Content Include="Content\bootstrap.min.css" />
+ <Content Include="Content\bootstrap.min.responsive.css" />
+ <Content Include="Content\bootstrap.responsive.css" />
+ <Content Include="Content\images\glyphicons-halflings-white.png" />
+ <Content Include="Content\images\glyphicons-halflings.png" />
+ <Content Include="Content\themes\base\images\ui-bg_flat_0_aaaaaa_40x100.png" />
+ <Content Include="Content\themes\base\images\ui-bg_flat_75_ffffff_40x100.png" />
+ <Content Include="Content\themes\base\images\ui-bg_glass_55_fbf9ee_1x400.png" />
+ <Content Include="Content\themes\base\images\ui-bg_glass_65_ffffff_1x400.png" />
+ <Content Include="Content\themes\base\images\ui-bg_glass_75_dadada_1x400.png" />
+ <Content Include="Content\themes\base\images\ui-bg_glass_75_e6e6e6_1x400.png" />
+ <Content Include="Content\themes\base\images\ui-bg_glass_95_fef1ec_1x400.png" />
+ <Content Include="Content\themes\base\images\ui-bg_highlight-soft_75_cccccc_1x100.png" />
+ <Content Include="Content\themes\base\images\ui-icons_222222_256x240.png" />
+ <Content Include="Content\themes\base\images\ui-icons_2e83ff_256x240.png" />
+ <Content Include="Content\themes\base\images\ui-icons_454545_256x240.png" />
+ <Content Include="Content\themes\base\images\ui-icons_888888_256x240.png" />
+ <Content Include="Content\themes\base\images\ui-icons_cd0a0a_256x240.png" />
+ <Content Include="Content\themes\base\jquery-ui.css" />
+ <Content Include="Content\themes\base\jquery.ui.accordion.css" />
+ <Content Include="Content\themes\base\jquery.ui.all.css" />
+ <Content Include="Content\themes\base\jquery.ui.autocomplete.css" />
+ <Content Include="Content\themes\base\jquery.ui.base.css" />
+ <Content Include="Content\themes\base\jquery.ui.button.css" />
+ <Content Include="Content\themes\base\jquery.ui.core.css" />
+ <Content Include="Content\themes\base\jquery.ui.datepicker.css" />
+ <Content Include="Content\themes\base\jquery.ui.dialog.css" />
+ <Content Include="Content\themes\base\jquery.ui.progressbar.css" />
+ <Content Include="Content\themes\base\jquery.ui.resizable.css" />
+ <Content Include="Content\themes\base\jquery.ui.selectable.css" />
+ <Content Include="Content\themes\base\jquery.ui.slider.css" />
+ <Content Include="Content\themes\base\jquery.ui.tabs.css" />
+ <Content Include="Content\themes\base\jquery.ui.theme.css" />
+ <Content Include="Content\themes\base\minified\images\ui-bg_flat_0_aaaaaa_40x100.png" />
+ <Content Include="Content\themes\base\minified\images\ui-bg_flat_75_ffffff_40x100.png" />
+ <Content Include="Content\themes\base\minified\images\ui-bg_glass_55_fbf9ee_1x400.png" />
+ <Content Include="Content\themes\base\minified\images\ui-bg_glass_65_ffffff_1x400.png" />
+ <Content Include="Content\themes\base\minified\images\ui-bg_glass_75_dadada_1x400.png" />
+ <Content Include="Content\themes\base\minified\images\ui-bg_glass_75_e6e6e6_1x400.png" />
+ <Content Include="Content\themes\base\minified\images\ui-bg_glass_95_fef1ec_1x400.png" />
+ <Content Include="Content\themes\base\minified\images\ui-bg_highlight-soft_75_cccccc_1x100.png" />
+ <Content Include="Content\themes\base\minified\images\ui-icons_222222_256x240.png" />
+ <Content Include="Content\themes\base\minified\images\ui-icons_2e83ff_256x240.png" />
+ <Content Include="Content\themes\base\minified\images\ui-icons_454545_256x240.png" />
+ <Content Include="Content\themes\base\minified\images\ui-icons_888888_256x240.png" />
+ <Content Include="Content\themes\base\minified\images\ui-icons_cd0a0a_256x240.png" />
+ <Content Include="Content\themes\base\minified\jquery-ui.min.css" />
+ <Content Include="Content\themes\base\minified\jquery.ui.accordion.min.css" />
+ <Content Include="Content\themes\base\minified\jquery.ui.all.min.css" />
+ <Content Include="Content\themes\base\minified\jquery.ui.autocomplete.min.css" />
+ <Content Include="Content\themes\base\minified\jquery.ui.base.min.css" />
+ <Content Include="Content\themes\base\minified\jquery.ui.button.min.css" />
+ <Content Include="Content\themes\base\minified\jquery.ui.core.min.css" />
+ <Content Include="Content\themes\base\minified\jquery.ui.datepicker.min.css" />
+ <Content Include="Content\themes\base\minified\jquery.ui.dialog.min.css" />
+ <Content Include="Content\themes\base\minified\jquery.ui.progressbar.min.css" />
+ <Content Include="Content\themes\base\minified\jquery.ui.resizable.min.css" />
+ <Content Include="Content\themes\base\minified\jquery.ui.selectable.min.css" />
+ <Content Include="Content\themes\base\minified\jquery.ui.slider.min.css" />
+ <Content Include="Content\themes\base\minified\jquery.ui.tabs.min.css" />
+ <Content Include="Content\themes\base\minified\jquery.ui.theme.min.css" />
+ <Content Include="Global.asax" />
+ <Content Include="README.jQuery.vsdoc.txt" />
+ <Content Include="Scripts\bootstrap.js" />
+ <Content Include="Scripts\bootstrap.min.js" />
+ <Content Include="Scripts\jquery-1.7.1-vsdoc.js" />
+ <Content Include="Scripts\jquery-1.7.1.js" />
+ <Content Include="Scripts\jquery-1.7.1.min.js" />
+ <Content Include="Scripts\jquery-ui-1.8.17.js" />
+ <Content Include="Scripts\jquery-ui-1.8.17.min.js" />
+ <Content Include="Scripts\jquery.validate-vsdoc.js" />
+ <Content Include="Scripts\jquery.validate.js" />
+ <Content Include="Scripts\jquery.validate.min.js" />
+ <Content Include="Scripts\modernizr-2.0.6-development-only.js" />
+ <Content Include="Web.config" />
+ <Content Include="Web.Debug.config">
+ <DependentUpon>Web.config</DependentUpon>
+ </Content>
+ <Content Include="Web.Release.config">
+ <DependentUpon>Web.config</DependentUpon>
+ </Content>
+ <Content Include="Content\Site.css" />
+ <Content Include="Scripts\jquery.unobtrusive-ajax.js" />
+ <Content Include="Scripts\jquery.unobtrusive-ajax.min.js" />
+ <Content Include="Scripts\jquery.validate.unobtrusive.js" />
+ <Content Include="Scripts\jquery.validate.unobtrusive.min.js" />
+ <Content Include="Scripts\MicrosoftAjax.js" />
+ <Content Include="Scripts\MicrosoftAjax.debug.js" />
+ <Content Include="Scripts\MicrosoftMvcAjax.js" />
+ <Content Include="Scripts\MicrosoftMvcAjax.debug.js" />
+ <Content Include="Scripts\MicrosoftMvcValidation.js" />
+ <Content Include="Scripts\MicrosoftMvcValidation.debug.js" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="App_Data\" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="packages.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Views\Web.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Views\Shared\Error.cshtml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Views\Shared\_LogOnPartial.cshtml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Views\Shared\_Layout.cshtml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Views\Home\Index.cshtml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Views\Home\About.cshtml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Views\Account\Register.cshtml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Views\Account\LogOn.cshtml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Views\Account\ChangePasswordSuccess.cshtml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Views\Account\ChangePassword.cshtml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Views\_ViewStart.cshtml" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="CodeTemplates\AddView\CSHTML\Create.tt" />
+ <None Include="CodeTemplates\AddView\CSHTML\Delete.tt" />
+ <None Include="CodeTemplates\AddView\CSHTML\Details.tt" />
+ <None Include="CodeTemplates\AddView\CSHTML\Edit.tt" />
+ <None Include="CodeTemplates\AddView\CSHTML\Empty.tt" />
+ <None Include="CodeTemplates\AddView\CSHTML\List.tt" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target> -->
+ <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
+ <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
+ </Target>
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
+ <WebProjectProperties>
+ <UseIIS>False</UseIIS>
+ <AutoAssignPort>True</AutoAssignPort>
+ <DevelopmentServerPort>56184</DevelopmentServerPort>
+ <DevelopmentServerVPath>/</DevelopmentServerVPath>
+ <IISUrl>
+ </IISUrl>
+ <NTLMAuthentication>False</NTLMAuthentication>
+ <UseCustomServer>False</UseCustomServer>
+ <CustomServerUrl>
+ </CustomServerUrl>
+ <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
+ </WebProjectProperties>
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+</Project>
225 BlankMVCProject/BlankMVCProject/CodeTemplates/AddView/CSHTML/Create.tt
@@ -0,0 +1,225 @@
+<#@ template language="C#" HostSpecific="True" #>
+<#@ output extension=".cshtml" #>
+<#@ assembly name="System.ComponentModel.DataAnnotations" #>
+<#@ assembly name="System.Core" #>
+<#@ assembly name="System.Data.Entity" #>
+<#@ assembly name="System.Data.Linq" #>
+<#@ import namespace="System" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ import namespace="System.ComponentModel.DataAnnotations" #>
+<#@ import namespace="System.Data.Linq.Mapping" #>
+<#@ import namespace="System.Data.Objects.DataClasses" #>
+<#@ import namespace="System.Linq" #>
+<#@ import namespace="System.Reflection" #>
+<#
+MvcTextTemplateHost mvcHost = (MvcTextTemplateHost)(Host);
+#>
+@model <#= mvcHost.ViewDataTypeName #>
+<#
+// The following chained if-statement outputs the file header code and markup for a partial view, a content page, or a regular view.
+if(mvcHost.IsPartialView) {
+#>
+
+<#
+} else if(mvcHost.IsContentPage) {
+#>
+
+@{
+ ViewBag.Title = "<#= mvcHost.ViewName#>";
+<#
+if (!String.IsNullOrEmpty(mvcHost.MasterPageFile)) {
+#>
+ Layout = "<#= mvcHost.MasterPageFile#>";
+<#
+}
+#>
+}
+
+<div class="page-header">
+ <h2><#= mvcHost.ViewName#></h2>
+</div>
+<#
+} else {
+#>
+
+@{
+ Layout = null;
+}
+
+<!DOCTYPE html>
+
+<html>
+<head>
+ <title><#= mvcHost.ViewName #></title>
+</head>
+<body>
+ <div class="page-header">
+ </div>
+<#
+ PushIndent(" ");
+}
+#>
+<#
+if (mvcHost.ReferenceScriptLibraries) {
+#>
+<#
+ if (!mvcHost.IsContentPage) {
+#>
+<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
+<#
+ }
+#>
+<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
+<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
+
+<#
+}
+#>
+@using (Html.BeginForm()) {
+ @Html.ValidationSummary(true)
+ <fieldset>
+ <legend><#= mvcHost.ViewDataType.Name #></legend>
+<#
+foreach (ModelProperty property in GetModelProperties(mvcHost.ViewDataType)) {
+ if (!property.IsPrimaryKey && !property.IsReadOnly) {
+#>
+ <div class="control-group">
+ @Html.LabelFor(model => model.<#= property.Name #>)
+ <div class="controls">
+ @Html.EditorFor(model => model.<#= property.Name #>)
+ @Html.ValidationMessageFor(model => model.<#= property.Name #>)
+ </div>
+ </div>
+
+<#
+ }
+}
+#>
+ <div class="form-actions">
+ <input type="submit" class="btn btn-primary" value="Create" />
+ </div>
+ </fieldset>
+
+
+}
+
+<div>
+ @Html.ActionLink("Back to List", "Index")
+</div>
+<#
+// The following code closes the asp:Content tag used in the case of a master page and the body and html tags in the case of a regular view page
+#>
+<#
+if(!mvcHost.IsPartialView && !mvcHost.IsContentPage) {
+ ClearIndent();
+#>
+</body>
+</html>
+<#
+}
+#>
+
+<#+
+// Describes the information about a property on the model
+class ModelProperty {
+ public string Name { get; set; }
+ public string ValueExpression { get; set; }
+ public Type UnderlyingType { get; set; }
+ public bool IsPrimaryKey { get; set; }
+ public bool IsReadOnly { get; set; }
+}
+
+// Change this list to include any non-primitive types you think should be eligible for display/edit
+static Type[] bindableNonPrimitiveTypes = new[] {
+ typeof(string),
+ typeof(decimal),
+ typeof(Guid),
+ typeof(DateTime),
+ typeof(DateTimeOffset),
+ typeof(TimeSpan),
+};
+
+// Call this to get the list of properties in the model. Change this to modify or add your
+// own default formatting for display values.
+List<ModelProperty> GetModelProperties(Type type) {
+ List<ModelProperty> results = GetEligibleProperties(type);
+
+ foreach (ModelProperty prop in results) {
+ if (prop.UnderlyingType == typeof(double) || prop.UnderlyingType == typeof(decimal)) {
+ prop.ValueExpression = "String.Format(\"{0:F}\", " + prop.ValueExpression + ")";
+ }
+ else if (prop.UnderlyingType == typeof(DateTime)) {
+ prop.ValueExpression = "String.Format(\"{0:g}\", " + prop.ValueExpression + ")";
+ }
+ }
+
+ return results;
+}
+
+// Call this to determine if the property represents a primary key. Change the
+// code to change the definition of primary key.
+bool IsPrimaryKey(PropertyInfo property) {
+ if (string.Equals(property.Name, "id", StringComparison.OrdinalIgnoreCase)) { // EF Code First convention
+ return true;
+ }
+
+ if (string.Equals(property.Name, property.DeclaringType.Name + "id", StringComparison.OrdinalIgnoreCase)) { // EF Code First convention
+ return true;
+ }
+
+ foreach (object attribute in property.GetCustomAttributes(true)) {
+ if (attribute is KeyAttribute) { // WCF RIA Services and EF Code First explicit
+ return true;
+ }
+
+ var edmScalar = attribute as EdmScalarPropertyAttribute;
+ if (edmScalar != null && edmScalar.EntityKeyProperty) { // EF traditional
+ return true;
+ }
+
+ var column = attribute as ColumnAttribute;
+ if (column != null && column.IsPrimaryKey) { // LINQ to SQL
+ return true;
+ }
+ }
+
+ return false;
+}
+
+// This will return the primary key property name, if and only if there is exactly
+// one primary key. Returns null if there is no PK, or the PK is composite.
+string GetPrimaryKeyName(Type type) {
+ IEnumerable<string> pkNames = GetPrimaryKeyNames(type);
+ return pkNames.Count() == 1 ? pkNames.First() : null;
+}
+
+// This will return all the primary key names. Will return an empty list if there are none.
+IEnumerable<string> GetPrimaryKeyNames(Type type) {
+ return GetEligibleProperties(type).Where(mp => mp.IsPrimaryKey).Select(mp => mp.Name);
+}
+
+// Helper
+List<ModelProperty> GetEligibleProperties(Type type) {
+ List<ModelProperty> results = new List<ModelProperty>();
+
+ foreach (PropertyInfo prop in type.GetProperties(BindingFlags.Public | BindingFlags.Instance)) {
+ Type underlyingType = Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType;
+ if (prop.GetGetMethod() != null && prop.GetIndexParameters().Length == 0 && IsBindableType(underlyingType)) {
+ results.Add(new ModelProperty {
+ Name = prop.Name,
+ ValueExpression = "Model." + prop.Name,
+ UnderlyingType = underlyingType,
+ IsPrimaryKey = IsPrimaryKey(prop),
+ IsReadOnly = prop.GetSetMethod() == null
+ });
+ }
+ }
+
+ return results;
+}
+
+// Helper
+bool IsBindableType(Type type) {
+ return type.IsPrimitive || bindableNonPrimitiveTypes.Contains(type);
+}
+#>
207 BlankMVCProject/BlankMVCProject/CodeTemplates/AddView/CSHTML/Delete.tt
@@ -0,0 +1,207 @@
+<#@ template language="C#" HostSpecific="True" #>
+<#@ output extension=".cshtml" #>
+<#@ assembly name="System.ComponentModel.DataAnnotations" #>
+<#@ assembly name="System.Core" #>
+<#@ assembly name="System.Data.Entity" #>
+<#@ assembly name="System.Data.Linq" #>
+<#@ import namespace="System" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ import namespace="System.ComponentModel.DataAnnotations" #>
+<#@ import namespace="System.Data.Linq.Mapping" #>
+<#@ import namespace="System.Data.Objects.DataClasses" #>
+<#@ import namespace="System.Linq" #>
+<#@ import namespace="System.Reflection" #>
+<#
+MvcTextTemplateHost mvcHost = (MvcTextTemplateHost)(Host);
+#>
+@model <#= mvcHost.ViewDataTypeName #>
+<#
+// The following chained if-statement outputs the file header code and markup for a partial view, a content page, or a regular view.
+if(mvcHost.IsPartialView) {
+#>
+
+<#
+} else if(mvcHost.IsContentPage) {
+#>
+
+@{
+ ViewBag.Title = "<#= mvcHost.ViewName#>";
+<#
+if (!String.IsNullOrEmpty(mvcHost.MasterPageFile)) {
+#>
+ Layout = "<#= mvcHost.MasterPageFile#>";
+<#
+}
+#>
+}
+<div class="page-header">
+ <h2><#= mvcHost.ViewName#></h2>
+</div>
+
+<#
+} else {
+#>
+
+@{
+ Layout = null;
+}
+
+<!DOCTYPE html>
+
+<html>
+<head>
+ <title><#= mvcHost.ViewName #></title>
+</head>
+<body>
+ <div class="page-header">
+ </div>
+<#
+ PushIndent(" ");
+}
+#>
+ <h3>Are you sure you want to delete this?</h3>
+ @using (Html.BeginForm()) {
+ <div>
+ <fieldset>
+ <legend><#= mvcHost.ViewDataType.Name #></legend>
+ <br />
+<#
+foreach (ModelProperty property in GetModelProperties(mvcHost.ViewDataType)) {
+ if (!property.IsPrimaryKey) {
+#>
+ <div class="row">
+ <div class="span2">@Html.LabelFor(model => model.<#= property.Name #>)</div>
+ <div class="span10">@Html.DisplayFor(model => model.<#= property.Name #>)</div>
+ </div>
+
+<#
+ }
+}
+#>
+ <div class="form-actions">
+ <input type="submit" class="btn btn-primary" value="Delete" />
+ </div>
+ </fieldset>
+ <br />
+ </div>
+ }
+<div>
+ @Html.ActionLink("Back to List", "Index")
+</div>
+<#
+// The following code closes the asp:Content tag used in the case of a master page and the body and html tags in the case of a regular view page
+#>
+<#
+if(!mvcHost.IsPartialView && !mvcHost.IsContentPage) {
+ ClearIndent();
+#>
+</body>
+</html>
+<#
+}
+#>
+
+<#+
+// Describes the information about a property on the model
+class ModelProperty {
+ public string Name { get; set; }
+ public string ValueExpression { get; set; }
+ public Type UnderlyingType { get; set; }
+ public bool IsPrimaryKey { get; set; }
+ public bool IsReadOnly { get; set; }
+}
+
+// Change this list to include any non-primitive types you think should be eligible for display/edit
+static Type[] bindableNonPrimitiveTypes = new[] {
+ typeof(string),
+ typeof(decimal),
+ typeof(Guid),
+ typeof(DateTime),
+ typeof(DateTimeOffset),
+ typeof(TimeSpan),
+};
+
+// Call this to get the list of properties in the model. Change this to modify or add your
+// own default formatting for display values.
+List<ModelProperty> GetModelProperties(Type type) {
+ List<ModelProperty> results = GetEligibleProperties(type);
+
+ foreach (ModelProperty prop in results) {
+ if (prop.UnderlyingType == typeof(double) || prop.UnderlyingType == typeof(decimal)) {
+ prop.ValueExpression = "String.Format(\"{0:F}\", " + prop.ValueExpression + ")";
+ }
+ else if (prop.UnderlyingType == typeof(DateTime)) {
+ prop.ValueExpression = "String.Format(\"{0:g}\", " + prop.ValueExpression + ")";
+ }
+ }
+
+ return results;
+}
+
+// Call this to determine if the property represents a primary key. Change the
+// code to change the definition of primary key.
+bool IsPrimaryKey(PropertyInfo property) {
+ if (string.Equals(property.Name, "id", StringComparison.OrdinalIgnoreCase)) { // EF Code First convention
+ return true;
+ }
+
+ if (string.Equals(property.Name, property.DeclaringType.Name + "id", StringComparison.OrdinalIgnoreCase)) { // EF Code First convention
+ return true;
+ }
+
+ foreach (object attribute in property.GetCustomAttributes(true)) {
+ if (attribute is KeyAttribute) { // WCF RIA Services and EF Code First explicit
+ return true;
+ }
+
+ var edmScalar = attribute as EdmScalarPropertyAttribute;
+ if (edmScalar != null && edmScalar.EntityKeyProperty) { // EF traditional
+ return true;
+ }
+
+ var column = attribute as ColumnAttribute;
+ if (column != null && column.IsPrimaryKey) { // LINQ to SQL
+ return true;
+ }
+ }
+
+ return false;
+}
+
+// This will return the primary key property name, if and only if there is exactly
+// one primary key. Returns null if there is no PK, or the PK is composite.
+string GetPrimaryKeyName(Type type) {
+ IEnumerable<string> pkNames = GetPrimaryKeyNames(type);
+ return pkNames.Count() == 1 ? pkNames.First() : null;
+}
+
+// This will return all the primary key names. Will return an empty list if there are none.
+IEnumerable<string> GetPrimaryKeyNames(Type type) {
+ return GetEligibleProperties(type).Where(mp => mp.IsPrimaryKey).Select(mp => mp.Name);
+}
+
+// Helper
+List<ModelProperty> GetEligibleProperties(Type type) {
+ List<ModelProperty> results = new List<ModelProperty>();
+
+ foreach (PropertyInfo prop in type.GetProperties(BindingFlags.Public | BindingFlags.Instance)) {
+ Type underlyingType = Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType;
+ if (prop.GetGetMethod() != null && prop.GetIndexParameters().Length == 0 && IsBindableType(underlyingType)) {
+ results.Add(new ModelProperty {
+ Name = prop.Name,
+ ValueExpression = "Model." + prop.Name,
+ UnderlyingType = underlyingType,
+ IsPrimaryKey = IsPrimaryKey(prop),
+ IsReadOnly = prop.GetSetMethod() == null
+ });
+ }
+ }
+
+ return results;
+}
+
+// Helper
+bool IsBindableType(Type type) {
+ return type.IsPrimitive || bindableNonPrimitiveTypes.Contains(type);
+}
+#>
211 BlankMVCProject/BlankMVCProject/CodeTemplates/AddView/CSHTML/Details.tt
@@ -0,0 +1,211 @@
+<#@ template language="C#" HostSpecific="True" #>
+<#@ output extension=".cshtml" #>
+<#@ assembly name="System.ComponentModel.DataAnnotations" #>
+<#@ assembly name="System.Core" #>
+<#@ assembly name="System.Data.Entity" #>
+<#@ assembly name="System.Data.Linq" #>
+<#@ import namespace="System" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ import namespace="System.ComponentModel.DataAnnotations" #>
+<#@ import namespace="System.Data.Linq.Mapping" #>
+<#@ import namespace="System.Data.Objects.DataClasses" #>
+<#@ import namespace="System.Linq" #>
+<#@ import namespace="System.Reflection" #>
+<#
+MvcTextTemplateHost mvcHost = (MvcTextTemplateHost)(Host);
+#>
+@model <#= mvcHost.ViewDataTypeName #>
+<#
+// The following chained if-statement outputs the file header code and markup for a partial view, a content page, or a regular view.
+if(mvcHost.IsPartialView) {
+#>
+
+<#
+} else if(mvcHost.IsContentPage) {
+#>
+
+@{
+ ViewBag.Title = "<#= mvcHost.ViewName#>";
+<#
+if (!String.IsNullOrEmpty(mvcHost.MasterPageFile)) {
+#>
+ Layout = "<#= mvcHost.MasterPageFile#>";
+<#
+}
+#>
+}
+
+<div class="page-header">
+ <h2><#= mvcHost.ViewName#></h2>
+</div>
+
+<#
+} else {
+#>
+
+@{
+ Layout = null;
+}
+
+<!DOCTYPE html>
+
+<html>
+<head>
+ <title><#= mvcHost.ViewName #></title>
+</head>
+<body>
+<div class="page-header">
+</div>
+<#
+ PushIndent(" ");
+}
+#>
+ <fieldset>
+ <legend><#= mvcHost.ViewDataType.Name #></legend>
+ <br />
+<#
+foreach (ModelProperty property in GetModelProperties(mvcHost.ViewDataType)) {
+ if (!property.IsPrimaryKey) {
+#>
+
+ <div class="row">
+ <div class="span2">@Html.LabelFor(model => model.<#= property.Name #>)</div>
+ <div class="span10">@Html.DisplayFor(model => model.<#= property.Name #>)</div>
+ </div>
+<#
+ }
+}
+#>
+ </fieldset>
+ <br />
+ <p>
+<#
+string pkName = GetPrimaryKeyName(mvcHost.ViewDataType);
+if (pkName != null) {
+#>
+ @Html.ActionLink("Edit", "Edit", new { id=Model.<#= pkName #> }) |
+ @Html.ActionLink("Back to List", "Index")
+<#
+} else {
+#>
+ @Html.ActionLink("Edit", "Edit", new { /* id=Model.PrimaryKey */ }) |
+ @Html.ActionLink("Back to List", "Index")
+<#
+}
+#>
+ </p>
+</div>
+<#
+if(!mvcHost.IsPartialView && !mvcHost.IsContentPage) {
+ ClearIndent();
+#>
+</body>
+</html>
+<#
+}
+#>
+
+<#+
+// Describes the information about a property on the model
+class ModelProperty {
+ public string Name { get; set; }
+ public string ValueExpression { get; set; }
+ public Type UnderlyingType { get; set; }
+ public bool IsPrimaryKey { get; set; }
+ public bool IsReadOnly { get; set; }
+}
+
+// Change this list to include any non-primitive types you think should be eligible for display/edit
+static Type[] bindableNonPrimitiveTypes = new[] {
+ typeof(string),
+ typeof(decimal),
+ typeof(Guid),
+ typeof(DateTime),
+ typeof(DateTimeOffset),
+ typeof(TimeSpan),
+};
+
+// Call this to get the list of properties in the model. Change this to modify or add your
+// own default formatting for display values.
+List<ModelProperty> GetModelProperties(Type type) {
+ List<ModelProperty> results = GetEligibleProperties(type);
+
+ foreach (ModelProperty prop in results) {
+ if (prop.UnderlyingType == typeof(double) || prop.UnderlyingType == typeof(decimal)) {
+ prop.ValueExpression = "String.Format(\"{0:F}\", " + prop.ValueExpression + ")";
+ }
+ else if (prop.UnderlyingType == typeof(DateTime)) {
+ prop.ValueExpression = "String.Format(\"{0:g}\", " + prop.ValueExpression + ")";
+ }
+ }
+
+ return results;
+}
+
+// Call this to determine if the property represents a primary key. Change the
+// code to change the definition of primary key.
+bool IsPrimaryKey(PropertyInfo property) {
+ if (string.Equals(property.Name, "id", StringComparison.OrdinalIgnoreCase)) { // EF Code First convention
+ return true;
+ }
+
+ if (string.Equals(property.Name, property.DeclaringType.Name + "id", StringComparison.OrdinalIgnoreCase)) { // EF Code First convention
+ return true;
+ }
+
+ foreach (object attribute in property.GetCustomAttributes(true)) {
+ if (attribute is KeyAttribute) { // WCF RIA Services and EF Code First explicit
+ return true;
+ }
+
+ var edmScalar = attribute as EdmScalarPropertyAttribute;
+ if (edmScalar != null && edmScalar.EntityKeyProperty) { // EF traditional
+ return true;
+ }
+
+ var column = attribute as ColumnAttribute;
+ if (column != null && column.IsPrimaryKey) { // LINQ to SQL
+ return true;
+ }
+ }
+
+ return false;
+}
+
+// This will return the primary key property name, if and only if there is exactly
+// one primary key. Returns null if there is no PK, or the PK is composite.
+string GetPrimaryKeyName(Type type) {
+ IEnumerable<string> pkNames = GetPrimaryKeyNames(type);
+ return pkNames.Count() == 1 ? pkNames.First() : null;
+}
+
+// This will return all the primary key names. Will return an empty list if there are none.
+IEnumerable<string> GetPrimaryKeyNames(Type type) {
+ return GetEligibleProperties(type).Where(mp => mp.IsPrimaryKey).Select(mp => mp.Name);
+}
+
+// Helper
+List<ModelProperty> GetEligibleProperties(Type type) {
+ List<ModelProperty> results = new List<ModelProperty>();
+
+ foreach (PropertyInfo prop in type.GetProperties(BindingFlags.Public | BindingFlags.Instance)) {
+ Type underlyingType = Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType;
+ if (prop.GetGetMethod() != null && prop.GetIndexParameters().Length == 0 && IsBindableType(underlyingType)) {
+ results.Add(new ModelProperty {
+ Name = prop.Name,
+ ValueExpression = "Model." + prop.Name,
+ UnderlyingType = underlyingType,
+ IsPrimaryKey = IsPrimaryKey(prop),
+ IsReadOnly = prop.GetSetMethod() == null
+ });
+ }
+ }
+
+ return results;
+}
+
+// Helper
+bool IsBindableType(Type type) {
+ return type.IsPrimitive || bindableNonPrimitiveTypes.Contains(type);
+}
+#>
232 BlankMVCProject/BlankMVCProject/CodeTemplates/AddView/CSHTML/Edit.tt
@@ -0,0 +1,232 @@
+<#@ template language="C#" HostSpecific="True" #>
+<#@ output extension=".cshtml" #>
+<#@ assembly name="System.ComponentModel.DataAnnotations" #>
+<#@ assembly name="System.Core" #>
+<#@ assembly name="System.Data.Entity" #>
+<#@ assembly name="System.Data.Linq" #>
+<#@ import namespace="System" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ import namespace="System.ComponentModel.DataAnnotations" #>
+<#@ import namespace="System.Data.Linq.Mapping" #>
+<#@ import namespace="System.Data.Objects.DataClasses" #>
+<#@ import namespace="System.Linq" #>
+<#@ import namespace="System.Reflection" #>
+<#
+MvcTextTemplateHost mvcHost = (MvcTextTemplateHost)(Host);
+#>
+@model <#= mvcHost.ViewDataTypeName #>
+<#
+// The following chained if-statement outputs the file header code and markup for a partial view, a content page, or a regular view.
+if(mvcHost.IsPartialView) {
+#>
+
+<#
+} else if(mvcHost.IsContentPage) {
+#>
+
+@{
+ ViewBag.Title = "<#= mvcHost.ViewName#>";
+<#
+if (!String.IsNullOrEmpty(mvcHost.MasterPageFile)) {
+#>
+ Layout = "<#= mvcHost.MasterPageFile#>";
+<#
+}
+#>
+}
+<div class="page-header">
+ <h2><#= mvcHost.ViewName#></h2>
+</div>
+
+<#
+} else {
+#>
+
+@{
+ Layout = null;
+}
+
+<!DOCTYPE html>
+
+<html>
+<head>
+ <title><#= mvcHost.ViewName #></title>
+</head>
+<body>
+ <div class="page-header">
+ </div>
+<#
+ PushIndent(" ");
+}
+#>
+<#
+if (mvcHost.ReferenceScriptLibraries) {
+#>
+<#
+ if (!mvcHost.IsContentPage) {
+#>
+<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
+<#
+ }
+#>
+<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
+<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
+
+<#
+}
+#>
+ @using (Html.BeginForm()) {
+ @Html.ValidationSummary(true)
+ <fieldset>
+ <legend><#= mvcHost.ViewDataType.Name #></legend>
+<#
+foreach (ModelProperty property in GetModelProperties(mvcHost.ViewDataType)) {
+ if (property.IsPrimaryKey) {
+#>
+ <div class="control-group">
+ <div class="controls">
+ @Html.HiddenFor(model => model.<#= property.Name #>)
+ </div>
+ </div>
+<#
+ } else if (!property.IsReadOnly) {
+#>
+ <div class="control-group">
+ @Html.LabelFor(model => model.<#= property.Name #>)
+ <div class="controls">
+ @Html.EditorFor(model => model.<#= property.Name #>)
+ @Html.ValidationMessageFor(model => model.<#= property.Name #>)
+ </div>
+ </div>
+
+<#
+ }
+}
+#>
+ <div class="form-actions">
+ <input type="submit" class="btn btn-primary" value="Submit" />
+ </div>
+ </fieldset>
+
+}
+
+<div>
+ @Html.ActionLink("Back to List", "Index")
+</div>
+<#
+// The following code closes the asp:Content tag used in the case of a master page and the body and html tags in the case of a regular view page
+#>
+<#
+if(!mvcHost.IsPartialView && !mvcHost.IsContentPage) {
+ ClearIndent();
+#>
+</body>
+</html>
+<#
+}
+#>
+
+<#+
+// Describes the information about a property on the model
+class ModelProperty {
+ public string Name { get; set; }
+ public string ValueExpression { get; set; }
+ public Type UnderlyingType { get; set; }
+ public bool IsPrimaryKey { get; set; }
+ public bool IsReadOnly { get; set; }
+}
+
+// Change this list to include any non-primitive types you think should be eligible for display/edit
+static Type[] bindableNonPrimitiveTypes = new[] {
+ typeof(string),
+ typeof(decimal),
+ typeof(Guid),
+ typeof(DateTime),
+ typeof(DateTimeOffset),
+ typeof(TimeSpan),
+};
+
+// Call this to get the list of properties in the model. Change this to modify or add your
+// own default formatting for display values.
+List<ModelProperty> GetModelProperties(Type type) {
+ List<ModelProperty> results = GetEligibleProperties(type);
+
+ foreach (ModelProperty prop in results) {
+ if (prop.UnderlyingType == typeof(double) || prop.UnderlyingType == typeof(decimal)) {
+ prop.ValueExpression = "String.Format(\"{0:F}\", " + prop.ValueExpression + ")";
+ }
+ else if (prop.UnderlyingType == typeof(DateTime)) {
+ prop.ValueExpression = "String.Format(\"{0:g}\", " + prop.ValueExpression + ")";
+ }
+ }
+
+ return results;
+}
+
+// Call this to determine if the property represents a primary key. Change the
+// code to change the definition of primary key.
+bool IsPrimaryKey(PropertyInfo property) {
+ if (string.Equals(property.Name, "id", StringComparison.OrdinalIgnoreCase)) { // EF Code First convention
+ return true;
+ }
+
+ if (string.Equals(property.Name, property.DeclaringType.Name + "id", StringComparison.OrdinalIgnoreCase)) { // EF Code First convention
+ return true;
+ }
+
+ foreach (object attribute in property.GetCustomAttributes(true)) {
+ if (attribute is KeyAttribute) { // WCF RIA Services and EF Code First explicit
+ return true;
+ }
+
+ var edmScalar = attribute as EdmScalarPropertyAttribute;
+ if (edmScalar != null && edmScalar.EntityKeyProperty) { // EF traditional
+ return true;
+ }
+
+ var column = attribute as ColumnAttribute;
+ if (column != null && column.IsPrimaryKey) { // LINQ to SQL
+ return true;
+ }
+ }
+
+ return false;
+}
+
+// This will return the primary key property name, if and only if there is exactly
+// one primary key. Returns null if there is no PK, or the PK is composite.
+string GetPrimaryKeyName(Type type) {
+ IEnumerable<string> pkNames = GetPrimaryKeyNames(type);
+ return pkNames.Count() == 1 ? pkNames.First() : null;
+}
+
+// This will return all the primary key names. Will return an empty list if there are none.
+IEnumerable<string> GetPrimaryKeyNames(Type type) {
+ return GetEligibleProperties(type).Where(mp => mp.IsPrimaryKey).Select(mp => mp.Name);
+}
+
+// Helper
+List<ModelProperty> GetEligibleProperties(Type type) {
+ List<ModelProperty> results = new List<ModelProperty>();
+
+ foreach (PropertyInfo prop in type.GetProperties(BindingFlags.Public | BindingFlags.Instance)) {
+ Type underlyingType = Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType;
+ if (prop.GetGetMethod() != null && prop.GetIndexParameters().Length == 0 && IsBindableType(underlyingType)) {
+ results.Add(new ModelProperty {
+ Name = prop.Name,
+ ValueExpression = "Model." + prop.Name,
+ UnderlyingType = underlyingType,
+ IsPrimaryKey = IsPrimaryKey(prop),
+ IsReadOnly = prop.GetSetMethod() == null
+ });
+ }
+ }
+
+ return results;
+}
+
+// Helper
+bool IsBindableType(Type type) {
+ return type.IsPrimitive || bindableNonPrimitiveTypes.Contains(type);
+}
+#>
69 BlankMVCProject/BlankMVCProject/CodeTemplates/AddView/CSHTML/Empty.tt
@@ -0,0 +1,69 @@
+<#@ template language="C#" HostSpecific="True" #>
+<#@ output extension=".cshtml" #>
+<#
+MvcTextTemplateHost mvcHost = (MvcTextTemplateHost)(Host);
+if(!String.IsNullOrEmpty(mvcHost.ViewDataTypeName)) {
+#>
+@model <#= mvcHost.ViewDataTypeName #>
+
+<#
+}
+
+// The following chained if-statement outputs the file header code and markup for a partial view, a content page, or a regular view.
+if(mvcHost.IsPartialView) {
+#>
+<#
+} else if(mvcHost.IsContentPage) {
+#>
+@{
+ ViewBag.Title = "<#= mvcHost.ViewName#>";
+<#
+if (!String.IsNullOrEmpty(mvcHost.MasterPageFile)) {
+#>
+ Layout = "<#= mvcHost.MasterPageFile#>";
+<#
+}
+#>
+}
+
+<div class="page-header">
+ <h2><#= mvcHost.ViewName#></h2>
+</div>
+<#
+} else {
+#>
+@{
+ Layout = null;
+}
+
+<!DOCTYPE html>
+
+<html>
+<head>
+ <title><#= mvcHost.ViewName #></title>
+</head>
+<body>
+ <div class="page-header">
+ </div>
+<#
+ PushIndent(" ");
+}
+#>
+<#
+if(!mvcHost.IsPartialView && !mvcHost.IsContentPage) {
+#>
+<div>
+
+</div>
+<#
+}
+#>
+<#
+if(!mvcHost.IsPartialView && !mvcHost.IsContentPage) {
+ ClearIndent();
+#>
+</body>
+</html>
+<#
+}
+#>
240 BlankMVCProject/BlankMVCProject/CodeTemplates/AddView/CSHTML/List.tt
@@ -0,0 +1,240 @@
+<#@ template language="C#" HostSpecific="True" #>
+<#@ output extension=".cshtml" #>
+<#@ assembly name="System.ComponentModel.DataAnnotations" #>
+<#@ assembly name="System.Core" #>
+<#@ assembly name="System.Data.Entity" #>
+<#@ assembly name="System.Data.Linq" #>
+<#@ import namespace="System" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#@ import namespace="System.ComponentModel.DataAnnotations" #>
+<#@ import namespace="System.Data.Linq.Mapping" #>
+<#@ import namespace="System.Data.Objects.DataClasses" #>
+<#@ import namespace="System.Linq" #>
+<#@ import namespace="System.Reflection" #>
+<#
+MvcTextTemplateHost mvcHost = (MvcTextTemplateHost)(Host);
+#>
+@model IEnumerable<#= "<" + mvcHost.ViewDataTypeName + ">" #>
+<#
+// The following chained if-statement outputs the file header code and markup for a partial view, a content page, or a regular view.
+if(mvcHost.IsPartialView) {
+#>
+
+<#
+} else if(mvcHost.IsContentPage) {
+#>
+
+@{
+ ViewBag.Title = "<#= mvcHost.ViewName#>";
+<#
+if (!String.IsNullOrEmpty(mvcHost.MasterPageFile)) {
+#>
+ Layout = "<#= mvcHost.MasterPageFile#>";
+<#
+}
+#>
+}
+
+<div class="page-header">
+ <h2><#= mvcHost.ViewName#></h2>
+</div>
+<#
+} else {
+#>
+
+@{
+ Layout = null;
+}
+
+<!DOCTYPE html>
+
+<html>
+<head>
+ <title><#= mvcHost.ViewName #></title>
+</head>
+<body>
+ <div class="page-header">
+ </div>
+<#
+ PushIndent(" ");
+}
+#>
+ <p>
+ @Html.ActionLink("Create New", "Create")
+ </p>
+ <table class="table table-striped">
+ <thead>
+ <tr>
+ <th></th>
+<#
+List<ModelProperty> properties = GetModelProperties(mvcHost.ViewDataType);
+foreach (ModelProperty property in properties) {
+ if (!property.IsPrimaryKey) {
+#>
+ <th>
+ <#= property.Name #>
+ </th>
+<#
+ }
+}
+#>
+ </tr>
+ </thead>
+ <tbody>
+
+@foreach (var item in Model) {
+ <tr>
+<#
+string pkName = GetPrimaryKeyName(mvcHost.ViewDataType);
+if (pkName != null) {
+#>
+ <td>
+ @Html.ActionLink("Edit", "Edit", new { id=item.<#= pkName #> }) |
+ @Html.ActionLink("Details", "Details", new { id=item.<#= pkName #> }) |
+ @Html.ActionLink("Delete", "Delete", new { id=item.<#= pkName #> })
+ </td>
+<#
+} else {
+#>
+ <td>
+ @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
+ @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
+ @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
+ </td>
+<#
+}
+
+foreach (ModelProperty property in properties) {
+ if (!property.IsPrimaryKey) {
+#>
+ <td>
+ @<#= property.ValueExpression.Replace("Model.", "item.") #>
+ </td>
+<#
+ }
+}
+#>
+ </tr>
+}
+ </tbody>
+ </table>
+<#
+// The following code closes the asp:Content tag used in the case of a master page and the body and html tags in the case of a regular view page
+#>
+<#
+if(mvcHost.IsContentPage) {
+#>
+<#
+} else if(!mvcHost.IsPartialView && !mvcHost.IsContentPage) {
+ ClearIndent();
+#>
+</body>
+</html>
+<#
+}
+#>
+
+<#+
+// Describes the information about a property on the model
+class ModelProperty {
+ public string Name { get; set; }
+ public string ValueExpression { get; set; }
+ public Type UnderlyingType { get; set; }
+ public bool IsPrimaryKey { get; set; }
+ public bool IsReadOnly { get; set; }
+}
+
+// Change this list to include any non-primitive types you think should be eligible for display/edit
+static Type[] bindableNonPrimitiveTypes = new[] {
+ typeof(string),
+ typeof(decimal),
+ typeof(Guid),
+ typeof(DateTime),
+ typeof(DateTimeOffset),
+ typeof(TimeSpan),
+};
+
+// Call this to get the list of properties in the model. Change this to modify or add your
+// own default formatting for display values.
+List<ModelProperty> GetModelProperties(Type type) {
+ List<ModelProperty> results = GetEligibleProperties(type);
+
+ foreach (ModelProperty prop in results) {
+ if (prop.UnderlyingType == typeof(double) || prop.UnderlyingType == typeof(decimal)) {
+ prop.ValueExpression = "String.Format(\"{0:F}\", " + prop.ValueExpression + ")";
+ }
+ else if (prop.UnderlyingType == typeof(DateTime)) {
+ prop.ValueExpression = "String.Format(\"{0:g}\", " + prop.ValueExpression + ")";
+ }
+ }
+
+ return results;
+}
+
+// Call this to determine if the property represents a primary key. Change the
+// code to change the definition of primary key.
+bool IsPrimaryKey(PropertyInfo property) {
+ if (string.Equals(property.Name, "id", StringComparison.OrdinalIgnoreCase)) { // EF Code First convention
+ return true;
+ }
+
+ if (string.Equals(property.Name, property.DeclaringType.Name + "id", StringComparison.OrdinalIgnoreCase)) { // EF Code First convention
+ return true;
+ }
+
+ foreach (object attribute in property.GetCustomAttributes(true)) {
+ if (attribute is KeyAttribute) { // WCF RIA Services and EF Code First explicit
+ return true;
+ }
+
+ var edmScalar = attribute as EdmScalarPropertyAttribute;
+ if (edmScalar != null && edmScalar.EntityKeyProperty) { // EF traditional
+ return true;
+ }
+
+ var column = attribute as ColumnAttribute;
+ if (column != null && column.IsPrimaryKey) { // LINQ to SQL
+ return true;
+ }
+ }
+
+ return false;
+}
+
+// This will return the primary key property name, if and only if there is exactly
+// one primary key. Returns null if there is no PK, or the PK is composite.
+string GetPrimaryKeyName(Type type) {
+ IEnumerable<string> pkNames = GetPrimaryKeyNames(type);
+ return pkNames.Count() == 1 ? pkNames.First() : null;
+}
+
+// This will return all the primary key names. Will return an empty list if there are none.
+IEnumerable<string> GetPrimaryKeyNames(Type type) {
+ return GetEligibleProperties(type).Where(mp => mp.IsPrimaryKey).Select(mp => mp.Name);
+}
+
+// Helper
+List<ModelProperty> GetEligibleProperties(Type type) {
+ List<ModelProperty> results = new List<ModelProperty>();
+
+ foreach (PropertyInfo prop in type.GetProperties(BindingFlags.Public | BindingFlags.Instance)) {
+ Type underlyingType = Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType;
+ if (prop.GetGetMethod() != null && prop.GetIndexParameters().Length == 0 && IsBindableType(underlyingType)) {
+ results.Add(new ModelProperty {
+ Name = prop.Name,
+ ValueExpression = "Model." + prop.Name,
+ UnderlyingType = underlyingType,
+ IsPrimaryKey = IsPrimaryKey(prop),
+ IsReadOnly = prop.GetSetMethod() == null
+ });
+ }
+ }
+
+ return results;
+}
+
+// Helper
+bool IsBindableType(Type type) {
+ return type.IsPrimitive || bindableNonPrimitiveTypes.Contains(type);
+}
+#>
324 BlankMVCProject/BlankMVCProject/Content/Site.css
@@ -0,0 +1,324 @@
+/*----------------------------------------------------------
+The base color for this template is #5c87b2. If you'd like
+to use a different color start by replacing all instances of
+#5c87b2 with your new color.
+----------------------------------------------------------*/
+body {
+ background-color: #5c87b2;
+ font-size: .85em;
+ font-family: "Trebuchet MS", Verdana, Helvetica, Sans-Serif;
+ margin: 0;
+ padding: 0;
+ color: #696969;
+}
+
+a:link {
+ color: #034af3;
+ text-decoration: underline;
+}
+
+a:visited {
+ color: #505abc;
+}
+
+a:hover {
+ color: #1d60ff;
+ text-decoration: none;
+}
+
+a:active {
+ color: #12eb87;
+}
+
+p, ul {
+ margin-bottom: 20px;
+ line-height: 1.6em;
+}
+
+header,
+footer,
+nav,
+section {
+ display: block;
+}
+
+/* HEADINGS
+----------------------------------------------------------*/
+h1, h2, h3, h4, h5, h6 {
+ font-size: 1.5em;
+ color: #000;
+}
+
+h1 {
+ font-size: 2em;
+ padding-bottom: 0;
+ margin-bottom: 0;
+}
+
+h2 {
+ padding: 0 0 10px 0;
+}
+
+h3 {
+ font-size: 1.2em;
+}
+
+h4 {
+ font-size: 1.1em;
+}
+
+h5, h6 {
+ font-size: 1em;
+}
+
+/* PRIMARY LAYOUT ELEMENTS
+----------------------------------------------------------*/
+
+/* you can specify a greater or lesser percentage for the
+page width. Or, you can specify an exact pixel width. */
+.page {
+ width: 90%;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+header, #header {
+ position: relative;
+ margin-bottom: 0px;
+ color: #000;
+ padding: 0;
+}
+
+header h1, #header h1 {
+ font-weight: bold;
+ padding: 5px 0;
+ margin: 0;
+ color: #fff;
+ border: none;
+ line-height: 2em;
+ font-size: 32px !important;
+ text-shadow: 1px 1px 2px #111;
+}
+
+#main {
+ padding: 30px 30px 15px 30px;
+ background-color: #fff;
+ border-radius: 4px 0 0 0;
+ -webkit-border-radius: 4px 0 0 0;
+ -moz-border-radius: 4px 0 0 0;
+}
+
+footer,
+#footer {
+ background-color: #fff;
+ color: #999;
+ padding: 10px 0;
+ text-align: center;
+ line-height: normal;
+ margin: 0 0 30px 0;
+ font-size: .9em;
+ border-radius: 0 0 4px 4px;
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+}
+
+/* TAB MENU
+----------------------------------------------------------*/
+ul#menu {
+ border-bottom: 1px #5C87B2 solid;
+ padding: 0 0 2px;
+ position: relative;
+ margin: 0;
+ text-align: right;
+}
+
+ul#menu li {
+ display: inline;
+ list-style: none;
+}
+
+ul#menu li#greeting {
+ padding: 10px 20px;
+ font-weight: bold;
+ text-decoration: none;
+ line-height: 2.8em;
+ color: #fff;
+}
+
+ul#menu li a {
+ padding: 10px 20px;
+ font-weight: bold;
+ text-decoration: none;
+ line-height: 2.8em;
+ background-color: #e8eef4;
+ color: #034af3;
+ border-radius: 4px 4px 0 0;
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+}
+
+ul#menu li a:hover {
+ background-color: #fff;
+ text-decoration: none;
+}
+
+ul#menu li a:active {
+ background-color: #a6e2a6;
+ text-decoration: none;
+}
+
+ul#menu li.selected a {
+ background-color: #fff;
+ color: #000;
+}
+
+/* FORM LAYOUT ELEMENTS
+----------------------------------------------------------*/
+
+fieldset {
+ border: 1px solid #ddd;
+ padding: 0 1.4em 1.4em 1.4em;
+ margin: 0 0 1.5em 0;
+}
+
+legend {
+ font-size: 1.2em;
+ font-weight: bold;
+}
+
+textarea {
+ min-height: 75px;
+}
+
+input[type="text"],
+input[type="password"] {
+ border: 1px solid #ccc;
+ padding: 2px;
+ font-size: 1.2em;
+ color: #444;
+ width: 200px;
+}
+
+select {
+ border: 1px solid #ccc;
+ padding: 2px;
+ font-size: 1.2em;
+ color: #444;
+}
+
+input[type="submit"] {
+ font-size: 1.2em;
+ padding: 5px;
+}
+
+/* TABLE
+----------------------------------------------------------*/
+
+table {
+ border: solid 1px #e8eef4;
+ border-collapse: collapse;
+}
+
+table td {
+ padding: 5px;
+ border: solid 1px #e8eef4;
+}
+
+table th {
+ padding: 6px 5px;
+ text-align: left;
+ background-color: #e8eef4;
+ border: solid 1px #e8eef4;
+}
+
+/* MISC
+----------------------------------------------------------*/
+.clear {
+ clear: both;
+}
+
+.error {
+ color: Red;
+}
+
+nav,
+#menucontainer {
+ margin-top: 40px;
+}
+
+div#title {
+ display: block;
+ float: left;
+ text-align: left;
+}
+
+#logindisplay {
+ font-size: 1.1em;
+ display: block;
+ text-align: right;
+ margin: 10px;
+ color: White;
+}
+
+#logindisplay a:link {
+ color: white;
+ text-decoration: underline;
+}
+
+#logindisplay a:visited {
+ color: white;
+ text-decoration: underline;
+}
+
+#logindisplay a:hover {
+ color: white;
+ text-decoration: none;
+}
+
+/* Styles for validation helpers
+-----------------------------------------------------------*/
+.field-validation-error {
+ color: #ff0000;
+}
+
+.field-validation-valid {
+ display: none;
+}
+
+.input-validation-error {
+ border: 1px solid #ff0000;
+ background-color: #ffeeee;
+}
+
+.validation-summary-errors {
+ font-weight: bold;
+ color: #ff0000;
+}
+
+.validation-summary-valid {
+ display: none;
+}
+
+/* Styles for editor and display helpers
+----------------------------------------------------------*/
+.display-label,
+.editor-label {
+ margin: 1em 0 0 0;
+}
+
+.display-field,
+.editor-field {
+ margin: 0.5em 0 0 0;
+}
+
+.text-box {
+ width: 30em;
+}
+
+.text-box.multi-line {
+ height: 6.5em;
+}
+
+.tri-state {
+ width: 6em;
+}
34 BlankMVCProject/BlankMVCProject/Content/bootstrap-overrides.css
@@ -0,0 +1,34 @@
+body {
+ padding-top: 40px;
+}
+
+.field-validation-error {
+ color: #b94a48;
+}
+
+.field-validation-valid {
+ display: none;
+}
+
+.input-validation-error {
+ border-color: #c87872;
+ -webkit-box-shadow: 0 0 3px rgba(171, 41, 32, 0.25);
+ -moz-box-shadow: 0 0 3px rgba(171, 41, 32, 0.25);
+ box-shadow: 0 0 3px rgba(171, 41, 32, 0.25);
+}
+
+.input-validation-error:focus {
+ border-color: #b9554d;
+ -webkit-box-shadow: 0 0 6px rgba(171, 41, 32, 0.5);
+ -moz-box-shadow: 0 0 6px rgba(171, 41, 32, 0.5);
+ box-shadow: 0 0 6px rgba(171, 41, 32, 0.5);
+}
+
+.navbar form .btn, .navbar form .input-small {
+ margin-top: 5px;
+ margin-bottom: 5px;
+}
+
+.nomargin {
+ margin: 0 0 0 0;
+}
3,363 BlankMVCProject/BlankMVCProject/Content/bootstrap.css
3,363 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
610 BlankMVCProject/BlankMVCProject/Content/bootstrap.min.css
@@ -0,0 +1,610 @@
+article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
+audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
+audio:not([controls]){display:none;}
+html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
+a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
+a:hover,a:active{outline:0;}
+sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
+sup{top:-0.5em;}
+sub{bottom:-0.25em;}
+img{max-width:100%;height:auto;border:0;-ms-interpolation-mode:bicubic;}
+button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
+button,input{*overflow:visible;line-height:normal;}
+button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
+button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}
+input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}
+input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
+textarea{overflow:auto;vertical-align:top;}
+body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333333;background-color:#ffffff;}
+a{color:#0088cc;text-decoration:none;}
+a:hover{color:#005580;text-decoration:underline;}
+.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";}
+.row:after{clear:both;}
+[class*="span"]{float:left;margin-left:20px;}
+.span1{width:60px;}
+.span2{width:140px;}
+.span3{width:220px;}
+.span4{width:300px;}
+.span5{width:380px;}
+.span6{width:460px;}
+.span7{width:540px;}
+.span8{width:620px;}
+.span9{width:700px;}
+.span10{width:780px;}
+.span11{width:860px;}
+.span12,.container{width:940px;}
+.offset1{margin-left:100px;}
+.offset2{margin-left:180px;}
+.offset3{margin-left:260px;}
+.offset4{margin-left:340px;}
+.offset5{margin-left:420px;}
+.offset6{margin-left:500px;}
+.offset7{margin-left:580px;}
+.offset8{margin-left:660px;}
+.offset9{margin-left:740px;}
+.offset10{margin-left:820px;}
+.offset11{margin-left:900px;}
+.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";}
+.row-fluid:after{clear:both;}
+.row-fluid>[class*="span"]{float:left;margin-left:2.127659574%;}
+.row-fluid>[class*="span"]:first-child{margin-left:0;}
+.row-fluid .span1{width:6.382978723%;}
+.row-fluid .span2{width:14.89361702%;}
+.row-fluid .span3{width:23.404255317%;}
+.row-fluid .span4{width:31.914893614%;}
+.row-fluid .span5{width:40.425531911%;}
+.row-fluid .span6{width:48.93617020799999%;}
+.row-fluid .span7{width:57.446808505%;}
+.row-fluid .span8{width:65.95744680199999%;}
+.row-fluid .span9{width:74.468085099%;}
+.row-fluid .span10{width:82.97872339599999%;}
+.row-fluid .span11{width:91.489361693%;}
+.row-fluid .span12{width:99.99999998999999%;}
+.container{width:940px;margin-left:auto;margin-right:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";}
+.container:after{clear:both;}
+.container-fluid{padding-left:20px;padding-right:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";}
+.container-fluid:after{clear:both;}
+p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;}p small{font-size:11px;color:#999999;}
+.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;}
+h1,h2,h3,h4,h5,h6{margin:0;font-weight:bold;color:#333333;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;}
+h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;}
+h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;}
+h3{line-height:27px;font-size:18px;}h3 small{font-size:14px;}
+h4,h5,h6{line-height:18px;}
+h4{font-size:14px;}h4 small{font-size:12px;}
+h5{font-size:12px;}
+h6{font-size:11px;color:#999999;text-transform:uppercase;}
+.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;}
+.page-header h1{line-height:1;}
+ul,ol{padding:0;margin:0 0 9px 25px;}
+ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
+ul{list-style:disc;}
+ol{list-style:decimal;}
+li{line-height:18px;}
+ul.unstyled{margin-left:0;list-style:none;}
+dl{margin-bottom:18px;}
+dt,dd{line-height:18px;}
+dt{font-weight:bold;}
+dd{margin-left:9px;}
+hr{margin:18px 0;border:0;border-top:1px solid #e5e5e5;border-bottom:1px solid #ffffff;}
+strong{font-weight:bold;}
+em{font-style:italic;}
+.muted{color:#999999;}
+abbr{font-size:90%;text-transform:uppercase;border-bottom:1px dotted #ddd;cursor:help;}
+blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;}
+blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
+blockquote.pull-right{float:right;padding-left:0;padding-right:15px;border-left:0;border-right:5px solid #eeeeee;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
+q:before,q:after,blockquote:before,blockquote:after{content:"";}
+address{display:block;margin-bottom:18px;line-height:18px;font-style:normal;}
+small{font-size:100%;}
+cite{font-style:normal;}
+code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+code{padding:3px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;}
+pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12px;line-height:18px;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;white-space:pre;white-space:pre-wrap;word-break:break-all;}pre.prettyprint{margin-bottom:18px;}
+pre code{padding:0;background-color:transparent;}
+form{margin:0 0 18px;}
+fieldset{padding:0;margin:0;border:0;}
+legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333333;border:0;border-bottom:1px solid #eee;}
+label,input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:18px;}
+label{display:block;margin-bottom:5px;color:#333333;}
+input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555555;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+.uneditable-textarea{width:auto;height:auto;}
+label input,label textarea,label select{display:block;}
+input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;border:0;cursor:pointer;border-radius:0 \0/;}
+input[type="file"]{padding:initial;line-height:initial;border:initial;background-color:#ffffff;background-color:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
+input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;}
+select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px;}
+select{width:220px;background-color:#ffffff;}
+select[multiple],select[size]{height:auto;}
+input[type="image"]{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
+textarea{height:auto;}
+input[type="hidden"]{display:none;}
+.radio,.checkbox{padding-left:18px;}
+.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;}
+.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}
+.radio.inline,.checkbox.inline{display:inline-block;margin-bottom:0;vertical-align:middle;}
+.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
+.controls>.radio.inline:first-child,.controls>.checkbox.inline:first-child{padding-top:0;}
+input,textarea{-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;}
+input:focus,textarea:focus{border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);outline:0;outline:thin dotted \9;}
+input[type="file"]:focus,input[type="checkbox"]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
+.input-mini{width:60px;}
+.input-small{width:90px;}
+.input-medium{width:150px;}
+.input-large{width:210px;}
+.input-xlarge{width:270px;}
+.input-xxlarge{width:530px;}
+input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{float:none;margin-left:0;}
+input.span1,textarea.span1,.uneditable-input.span1{width:50px;}
+input.span2,textarea.span2,.uneditable-input.span2{width:130px;}
+input.span3,textarea.span3,.uneditable-input.span3{width:210px;}
+input.span4,textarea.span4,.uneditable-input.span4{width:290px;}
+input.span5,textarea.span5,.uneditable-input.span5{width:370px;}
+input.span6,textarea.span6,.uneditable-input.span6{width:450px;}
+input.span7,textarea.span7,.uneditable-input.span7{width:530px;}
+input.span8,textarea.span8,.uneditable-input.span8{width:610px;}
+input.span9,textarea.span9,.uneditable-input.span9{width:690px;}
+input.span10,textarea.span10,.uneditable-input.span10{width:770px;}
+input.span11,textarea.span11,.uneditable-input.span11{width:850px;}
+input.span12,textarea.span12,.uneditable-input.span12{width:930px;}
+input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f5f5f5;border-color:#ddd;cursor:not-allowed;}
+.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
+.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e;}
+.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
+.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
+.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392;}
+.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
+.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
+.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b;}
+.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
+input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
+.form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#f5f5f5;border-top:1px solid #ddd;}
+.uneditable-input{display:block;background-color:#ffffff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
+:-moz-placeholder{color:#999999;}
+::-webkit-input-placeholder{color:#999999;}
+.help-block{margin-top:5px;margin-bottom:0;color:#999999;}
+.help-inline{display:inline-block;*display:inline;*zoom:1;margin-bottom:9px;vertical-align:middle;padding-left:5px;}
+.input-prepend,.input-append{margin-bottom:5px;*zoom:1;}.input-prepend:before,.input-append:before,.input-prepend:after,.input-append:after{display:table;content:"";}
+.input-prepend:after,.input-append:after{clear:both;}
+.input-prepend input,.input-append input,.input-prepend .uneditable-input,.input-append .uneditable-input{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-prepend input:focus,.input-append input:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{position:relative;z-index:2;}
+.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc;}
+.input-prepend .add-on,.input-append .add-on{float:left;display:block;width:auto;min-width:16px;height:18px;margin-right:-1px;padding:4px 5px;font-weight:normal;line-height:18px;color:#999999;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#f5f5f5;border:1px solid #ccc;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
+.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546;}
+.input-prepend .add-on{*margin-top:1px;}
+.input-append input,.input-append .uneditable-input{float:left;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
+.input-append .uneditable-input{border-right-color:#ccc;}
+.input-append .add-on{margin-right:0;margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
+.input-append input:first-child{*margin-left:-160px;}.input-append input:first-child+.add-on{*margin-left:-21px;}
+.search-query{padding-left:14px;padding-right:14px;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px;}
+.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input{display:inline-block;margin-bottom:0;}
+.form-search label,.form-inline label,.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{display:inline-block;}
+.form-search .input-append .add-on,.form-inline .input-prepend .add-on,.form-search .input-append .add-on,.form-inline .input-prepend .add-on{vertical-align:middle;}
+.control-group{margin-bottom:9px;}
+.form-horizontal legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate;}
+.form-horizontal .control-group{margin-bottom:18px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";}
+.form-horizontal .control-group:after{clear:both;}
+.form-horizontal .control-group>label{float:left;width:140px;padding-top:5px;text-align:right;}
+.form-horizontal .controls{margin-left:160px;}
+.form-horizontal .form-actions{padding-left:160px;}
+table{max-width:100%;border-collapse:collapse;border-spacing:0;}
+.table{width:100%;margin-bottom:18px;}.table th,.table td{padding:8px;line-height:18px;text-align:left;border-top:1px solid #ddd;}
+.table th{font-weight:bold;vertical-align:bottom;}
+.table td{vertical-align:top;}
+.table thead:first-child tr th,.table thead:first-child tr td{border-top:0;}
+.table tbody+tbody{border-top:2px solid #ddd;}
+.table-condensed th,.table-condensed td{padding:4px 5px;}
+.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapsed;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th+th,.table-bordered td+td,.table-bordered th+td,.table-bordered td+th{border-left:1px solid #ddd;}
+.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
+.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;}
+.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;}
+.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;}
+.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;}
+.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;}
+table .span1{float:none;width:44px;margin-left:0;}
+table .span2{float:none;width:124px;margin-left:0;}
+table .span3{float:none;width:204px;margin-left:0;}
+table .span4{float:none;width:284px;margin-left:0;}
+table .span5{float:none;width:364px;margin-left:0;}
+table .span6{float:none;width:444px;margin-left:0;}
+table .span7{float:none;width:524px;margin-left:0;}
+table .span8{float:none;width:604px;margin-left:0;}
+table .span9{float:none;width:684px;margin-left:0;}
+table .span10{float:none;width:764px;margin-left:0;}
+table .span11{float:none;width:844px;margin-left:0;}
+table .span12{float:none;width:924px;margin-left:0;}
+[class^="icon-"]{display:inline-block;width:14px;height:14px;vertical-align:text-top;background-image:url(images/glyphicons-halflings.png);background-position:14px 14px;background-repeat:no-repeat;*margin-right:.3em;}[class^="icon-"]:last-child{*margin-left:0;}
+.icon-white{background-image:url(images/glyphicons-halflings-white.png);}
+.icon-glass{background-position:0 0;}
+.icon-music{background-position:-24px 0;}
+.icon-search{background-position:-48px 0;}
+.icon-envelope{background-position:-72px 0;}
+.icon-heart{background-position:-96px 0;}
+.icon-star{background-position:-120px 0;}
+.icon-star-empty{background-position:-144px 0;}
+.icon-user{background-position:-168px 0;}
+.icon-film{background-position:-192px 0;}
+.icon-th-large{background-position:-216px 0;}
+.icon-th{background-position:-240px 0;}
+.icon-th-list{background-position:-264px 0;}
+.icon-ok{background-position:-288px 0;}
+.icon-remove{background-position:-312px 0;}
+.icon-zoom-in{background-position:-336px 0;}
+.icon-zoom-out{background-position:-360px 0;}
+.icon-off{background-position:-384px 0;}
+.icon-signal{background-position:-408px 0;}
+.icon-cog{background-position:-432px 0;}
+.icon-trash{background-position:-456px 0;}
+.icon-home{background-position:0 -24px;}
+.icon-file{background-position:-24px -24px;}
+.icon-time{background-position:-48px -24px;}
+.icon-road{background-position:-72px -24px;}
+.icon-download-alt{background-position:-96px -24px;}