wip - split app in two
Signed-off-by: Carl Sargunar <carl@sargunar.com>
This commit is contained in:
parent
bf9db21809
commit
3c8b71245f
29
umbraco-cms/app/umbracocms/Views/CV.cshtml
Normal file
29
umbraco-cms/app/umbracocms/Views/CV.cshtml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<ContentModels.CV>
|
||||||
|
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
|
||||||
|
@{
|
||||||
|
Layout = "Master.cshtml";
|
||||||
|
var homePage = Model.AncestorOrSelf<ContentModels.Home>();
|
||||||
|
}
|
||||||
|
|
||||||
|
<main class="page cv-page">
|
||||||
|
@await Html.PartialAsync("avatarHeader", homePage)
|
||||||
|
<section class="portfolio-block cv">
|
||||||
|
<div class="container">
|
||||||
|
@await Html.PartialAsync("workHistory", Model)
|
||||||
|
@await Html.PartialAsync("educationHistory", Model)
|
||||||
|
<div class="group">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
@await Html.PartialAsync("skills", Model)
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
@await Html.PartialAsync("contactInfo", Model)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@await Html.PartialAsync("hobbies", Model)
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
54
umbraco-cms/app/umbracocms/Views/Contact.cshtml
Normal file
54
umbraco-cms/app/umbracocms/Views/Contact.cshtml
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<ContentModels.Contact>
|
||||||
|
|
||||||
|
@using Portfolio.Core.Models.ViewModels
|
||||||
|
@using Portfolio.Core.Controllers.Surface
|
||||||
|
@using Portfolio.Core.Extensions
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
|
||||||
|
@{
|
||||||
|
Layout = "Master.cshtml";
|
||||||
|
var thisPage = (IPublishedContent)Model;
|
||||||
|
|
||||||
|
var submitted = false;
|
||||||
|
if (bool.TryParse(TempData["Success"]?.ToString() ?? "", out var success))
|
||||||
|
{
|
||||||
|
submitted = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
<main class="page contact-page">
|
||||||
|
<section class="portfolio-block contact">
|
||||||
|
<div class="container">
|
||||||
|
<div class="heading">
|
||||||
|
<h1 class="text-uppercase font-weight-bold">@(thisPage.GetPageTitle())</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if (submitted)
|
||||||
|
{
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 text-center">
|
||||||
|
@if (success)
|
||||||
|
{
|
||||||
|
<p>@Model.ThankYouMessage</p>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<p>@Model.ErrorMessage</p>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@using (Html.BeginUmbracoForm<ContactSurfaceController>("SubmitForm"))
|
||||||
|
{
|
||||||
|
<div class="form-group"><label for="Name">Name</label><input class="form-control item" type="text" id="Name" name="Name"></div>
|
||||||
|
<div class="form-group"><label for="Subject">Subject</label><input class="form-control item" type="text" id="Subject" name="Subject"></div>
|
||||||
|
<div class="form-group"><label for="Email">Email</label><input class="form-control item" type="email" id="Email" name="Email"></div>
|
||||||
|
<div class="form-group"><label for="Message">Message</label><textarea class="form-control item" id="Message" name="Message"></textarea></div>
|
||||||
|
<div class="form-group"><button class="btn btn-primary btn-block btn-lg" type="submit">Submit Form</button></div>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
13
umbraco-cms/app/umbracocms/Views/Home.cshtml
Normal file
13
umbraco-cms/app/umbracocms/Views/Home.cshtml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<ContentModels.Home>
|
||||||
|
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
|
||||||
|
@{
|
||||||
|
Layout = "Master.cshtml";
|
||||||
|
}
|
||||||
|
|
||||||
|
<main class="page lanidng-page">
|
||||||
|
@await Html.PartialAsync("avatarHeader", Model)
|
||||||
|
@await Html.PartialAsync("latestProjects", Model.Children<ContentModels.ProjectList>().FirstOrDefault())
|
||||||
|
@Html.GetBlockListHtml(Model.MainContent)
|
||||||
|
</main>
|
29
umbraco-cms/app/umbracocms/Views/Master.cshtml
Normal file
29
umbraco-cms/app/umbracocms/Views/Master.cshtml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
|
||||||
|
@{
|
||||||
|
Layout = null;
|
||||||
|
var homePage = Model.AncestorOrSelf<ContentModels.Home>();
|
||||||
|
}
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="@UmbracoContext.PublishedRequest.Culture">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
@await Html.PartialAsync("metaData")
|
||||||
|
<link rel="stylesheet preload" as="style" href="@Url.Content("~/portfolio-assets/bootstrap.min.css")">
|
||||||
|
<link rel="stylesheet preload" as="style" href="@Url.Content("~/portfolio-assets/ionicons.min.css")">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
@await Html.PartialAsync("topNavigation", homePage)
|
||||||
|
@RenderBody()
|
||||||
|
@await Html.PartialAsync("footer", homePage)
|
||||||
|
<script src="https://code.jquery.com/jquery-3.6.0.slim.min.js"
|
||||||
|
integrity="sha256-u7e5khyithlIdTpu22PHhENmPcRdFiHRjhAuHcs05RI="
|
||||||
|
crossorigin="anonymous"></script>
|
||||||
|
<script src="@Url.Content("/portfolio-assets/bootstrap.min.js")"></script>
|
||||||
|
<script src="@Url.Content("~/portfolio-assets/theme.js")"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
@ -0,0 +1,18 @@
|
|||||||
|
@inherits UmbracoViewPage<ContentModels.IProfileControls>
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
|
||||||
|
<section class="portfolio-block block-intro">
|
||||||
|
<div class="container">
|
||||||
|
@if (Model.Avatar != null)
|
||||||
|
{
|
||||||
|
<div class="avatar" style="background-image:url('@(Model.Avatar.GetCropUrl(width: 150, height: 150))');"></div>
|
||||||
|
}
|
||||||
|
<div class="about-me">
|
||||||
|
@Model.AboutMe
|
||||||
|
@if (Model.ProfileLink != null && !string.IsNullOrWhiteSpace(Model.ProfileLink.Url))
|
||||||
|
{
|
||||||
|
<a class="btn btn-outline-primary" role="button" target="@Model.ProfileLink.Target" href="@Model.ProfileLink.Url">@Model.ProfileLink.Name</a>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
@ -0,0 +1,22 @@
|
|||||||
|
@inherits UmbracoViewPage<Umbraco.Cms.Core.Models.Blocks.BlockListItem>
|
||||||
|
|
||||||
|
@using Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
|
||||||
|
@{
|
||||||
|
var cta = (CallToAction)Model.Content;
|
||||||
|
}
|
||||||
|
|
||||||
|
<section class="portfolio-block call-to-action border-bottom">
|
||||||
|
<div class="container">
|
||||||
|
<div class="d-flex justify-content-center align-items-center content">
|
||||||
|
@if(!string.IsNullOrWhiteSpace(cta.Text))
|
||||||
|
{
|
||||||
|
<h3>@cta.Text</h3>
|
||||||
|
}
|
||||||
|
@if(cta.Link != null)
|
||||||
|
{
|
||||||
|
<a class="btn btn-outline-primary btn-lg" target="@cta.Link.Target" href="@cta.Link.Url">@cta.Link.Name</a>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
@ -0,0 +1,53 @@
|
|||||||
|
@inherits UmbracoViewPage<Umbraco.Cms.Core.Models.Blocks.BlockListItem>
|
||||||
|
|
||||||
|
@using Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
@using System.Collections
|
||||||
|
@using Umbraco.Cms.Core.Models
|
||||||
|
@using Portfolio.Core.Extensions
|
||||||
|
|
||||||
|
@{
|
||||||
|
var cardsRow = (CardsRow)Model.Content;
|
||||||
|
}
|
||||||
|
|
||||||
|
<section class="portfolio-block skills">
|
||||||
|
<div class="container">
|
||||||
|
@if(!string.IsNullOrWhiteSpace(cardsRow.Title))
|
||||||
|
{
|
||||||
|
<div class="heading">
|
||||||
|
<h2>@cardsRow.Title</h2>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
@if(cardsRow.Cards != null && cardsRow.Cards.Any())
|
||||||
|
{
|
||||||
|
var visibleCards = cardsRow.Cards.Where(x => x.Settings == null
|
||||||
|
|| !x.Settings.HasProperty("hide")
|
||||||
|
|| !x.Settings.HasValue("hide")
|
||||||
|
|| !x.Settings.Value<bool>("hide"));
|
||||||
|
|
||||||
|
if(visibleCards != null && visibleCards.Any())
|
||||||
|
{
|
||||||
|
<div class="row">
|
||||||
|
@foreach (var item in cardsRow.Cards)
|
||||||
|
{
|
||||||
|
IconCard card = (IconCard)item.Content;
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card special-skill-item border-0">
|
||||||
|
@if (!string.IsNullOrWhiteSpace(card.IconClass))
|
||||||
|
{
|
||||||
|
<div class="card-header bg-transparent border-0"><i class="icon @card.IconClass.ToIconClass()"></i></div>
|
||||||
|
}
|
||||||
|
@if(!string.IsNullOrWhiteSpace(card.Title) || !string.IsNullOrWhiteSpace(card.Description))
|
||||||
|
{
|
||||||
|
<div class="card-body">
|
||||||
|
<h3 class="card-title">@card.Title</h3>
|
||||||
|
<p class="card-text">@card.Description</p>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</section>
|
@ -0,0 +1,29 @@
|
|||||||
|
@inherits UmbracoViewPage<Umbraco.Cms.Core.Models.Blocks.BlockListItem>
|
||||||
|
|
||||||
|
@using Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
|
||||||
|
@{
|
||||||
|
var projectPreview = (ProjectPreview)Model.Content;
|
||||||
|
}
|
||||||
|
|
||||||
|
<section class="portfolio-block website bg-primary text-white">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
<div class="col-md-12 col-lg-5 offset-lg-1 text">
|
||||||
|
<h3>@projectPreview.Title</h3>
|
||||||
|
<p>@projectPreview.Description</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12 col-lg-5">
|
||||||
|
@if (projectPreview.Image != null)
|
||||||
|
{
|
||||||
|
<div class="portfolio-laptop-mockup">
|
||||||
|
<div class="screen">
|
||||||
|
<div class="screen-content" style="background-image:url('@(projectPreview.Image.GetCropUrl(width: 298, height: 189))');"></div>
|
||||||
|
</div>
|
||||||
|
<div class="keyboard"></div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
@ -1,13 +1,22 @@
|
|||||||
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<Umbraco.Cms.Core.Models.Blocks.BlockListModel>
|
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<Umbraco.Cms.Core.Models.Blocks.BlockListModel>
|
||||||
@{
|
|
||||||
if (Model?.Any() != true) { return; }
|
|
||||||
}
|
|
||||||
<div class="umb-block-list">
|
|
||||||
@foreach (var block in Model)
|
|
||||||
{
|
|
||||||
if (block?.ContentUdi == null) { continue; }
|
|
||||||
var data = block.Content;
|
|
||||||
|
|
||||||
@await Html.PartialAsync("blocklist/Components/" + data.ContentType.Alias, block)
|
@using Umbraco.Extensions
|
||||||
}
|
|
||||||
</div>
|
@{
|
||||||
|
if (!Model.Any()) { return; }
|
||||||
|
|
||||||
|
var visibleBlocks = Model.Where(x =>
|
||||||
|
x.Settings == null
|
||||||
|
|| !x.Settings.HasProperty("hide")
|
||||||
|
|| !x.Settings.HasValue("hide")
|
||||||
|
|| !x.Settings.Value<bool>("hide"));
|
||||||
|
|
||||||
|
if (!visibleBlocks.Any()) { return; }
|
||||||
|
}
|
||||||
|
@foreach (var block in visibleBlocks)
|
||||||
|
{
|
||||||
|
if (block?.ContentUdi == null) { continue; }
|
||||||
|
var data = block.Content;
|
||||||
|
|
||||||
|
@await Html.PartialAsync("blocklist/Components/" + data.ContentType.Alias, block)
|
||||||
|
}
|
||||||
|
31
umbraco-cms/app/umbracocms/Views/Partials/contactInfo.cshtml
Normal file
31
umbraco-cms/app/umbracocms/Views/Partials/contactInfo.cshtml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
@inherits UmbracoViewPage<ContentModels.IWorkHistoryControls>
|
||||||
|
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
|
||||||
|
@using Portfolio.Core.Extensions
|
||||||
|
|
||||||
|
<div class="contact-info portfolio-info-card">
|
||||||
|
@if (!string.IsNullOrWhiteSpace(Model?.ContactInfoTitle ?? ""))
|
||||||
|
{
|
||||||
|
<h2>@Model.ContactInfoTitle</h2>
|
||||||
|
}
|
||||||
|
@if (Model.ContactInfo != null && Model.ContactInfo.Any())
|
||||||
|
{
|
||||||
|
foreach (var item in Model.ContactInfo)
|
||||||
|
{
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-1"><i class="icon @(item.Value<string>("icon").ToIconClass())"></i></div>
|
||||||
|
@if (item is ContentModels.IconLinkItem)
|
||||||
|
{
|
||||||
|
var linkItem = item as ContentModels.IconLinkItem;
|
||||||
|
<div class="col-9"><span><a href="@(linkItem.Link.Url)" target="@linkItem.Link.Target">@linkItem.Link.Name</a></span></div>
|
||||||
|
}
|
||||||
|
else if (item is ContentModels.IconTextItem)
|
||||||
|
{
|
||||||
|
<div class="col-9"><span>@(item.Value<string>("text"))</span></div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</div>
|
@ -0,0 +1,26 @@
|
|||||||
|
@inherits UmbracoViewPage<ContentModels.IWorkHistoryControls>
|
||||||
|
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
|
||||||
|
|
||||||
|
<div class="education group">
|
||||||
|
<div class="heading">
|
||||||
|
<h2 class="text-center">@Model.EducationHistoryTitle</h2>
|
||||||
|
</div>
|
||||||
|
@if (Model.EducationHistory != null && Model.EducationHistory.Any())
|
||||||
|
{
|
||||||
|
foreach (var item in Model.EducationHistory)
|
||||||
|
{
|
||||||
|
<div class="item">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<h3>@item.Title</h3>
|
||||||
|
<h4 class="organization">@item.PlaceName</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6"><span class="period">@item.StartDate.ToString("MM/yyyy") - @(item.EndDate != null && item.EndDate > DateTime.MinValue ? item.EndDate.ToString("MM/yyyy") : "Present")</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="text-muted">@item.Details</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</div>
|
38
umbraco-cms/app/umbracocms/Views/Partials/footer.cshtml
Normal file
38
umbraco-cms/app/umbracocms/Views/Partials/footer.cshtml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
@inherits UmbracoViewPage<ContentModels.IFooterControls>
|
||||||
|
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
@using Portfolio.Core.Extensions
|
||||||
|
|
||||||
|
@if (Model != null)
|
||||||
|
{
|
||||||
|
var homePage = (IPublishedContent)Model;
|
||||||
|
|
||||||
|
<footer class="page-footer">
|
||||||
|
<div class="container">
|
||||||
|
@if (Model.FooterContentLinks != null && Model.FooterContentLinks.Any())
|
||||||
|
{
|
||||||
|
<div class="links">
|
||||||
|
@foreach (var item in Model.FooterContentLinks)
|
||||||
|
{
|
||||||
|
<a href="@item.Url" target="@item.Target">@item.Name</a>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
@if (Model.FooterSocialLinks != null && Model.FooterSocialLinks.Any())
|
||||||
|
{
|
||||||
|
<div class="social-icons">
|
||||||
|
@foreach (var item in Model.FooterSocialLinks)
|
||||||
|
{
|
||||||
|
@if (item is ContentModels.IconLinkItem)
|
||||||
|
{
|
||||||
|
var linkItem = item as ContentModels.IconLinkItem;
|
||||||
|
<a href="@(linkItem.Link.Url)" target="@linkItem.Link.Target" rel="noopener" title="@linkItem.Link.Name" class="bg-primary"><i class="icon @(item.Value<string>("icon").ToIconClass())"></i></a>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
<p class="text-center small">© Copyright @homePage.GetSiteName() @DateTime.UtcNow.Year</p>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
}
|
13
umbraco-cms/app/umbracocms/Views/Partials/hobbies.cshtml
Normal file
13
umbraco-cms/app/umbracocms/Views/Partials/hobbies.cshtml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
@inherits UmbracoViewPage<ContentModels.CV>
|
||||||
|
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
|
||||||
|
|
||||||
|
<div class="hobbies group">
|
||||||
|
<div class="heading">
|
||||||
|
<h2 class="text-center">@Model.HobbiesTitle</h2>
|
||||||
|
</div>
|
||||||
|
<div class="text-center w-100">
|
||||||
|
<p class="text-muted">@Model.Hobbies</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,34 @@
|
|||||||
|
@inherits UmbracoViewPage<ContentModels.ProjectList>
|
||||||
|
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
@using Portfolio.Core.Extensions
|
||||||
|
|
||||||
|
@{
|
||||||
|
var projects = Model != null ? Model.Children<ContentModels.Project>().Where(x => x.IsVisible()) : Enumerable.Empty<ContentModels.Project>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@if (projects != null && projects.Any())
|
||||||
|
{
|
||||||
|
<section class="portfolio-block photography">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row no-gutters">
|
||||||
|
@foreach (var project in projects)
|
||||||
|
{
|
||||||
|
var projectTitle = project.GetPageTitle();
|
||||||
|
<div class="col-md-6 col-lg-4 item zoom-on-hover">
|
||||||
|
<a href="@project.Url()" title="@projectTitle">
|
||||||
|
@if (project.MainImage != null)
|
||||||
|
{
|
||||||
|
<img class="img-fluid image" width="663" height="442" src="@project.MainImage.GetCropUrl(width: 663, height: 442)" alt="@project.MainImage.GetAltText()">
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@projectTitle;
|
||||||
|
}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
}
|
10
umbraco-cms/app/umbracocms/Views/Partials/metaData.cshtml
Normal file
10
umbraco-cms/app/umbracocms/Views/Partials/metaData.cshtml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage
|
||||||
|
|
||||||
|
@using Portfolio.Core.Extensions
|
||||||
|
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta content="IE=edge,chrome=1' http-equiv='X-UA-Compatible">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||||
|
<meta name="description" content="@Model.GetMetaDescription()">
|
||||||
|
<title>@Model.GetMetaTitle()</title>
|
||||||
|
<link rel="canonical" href="@Model.GetCanonicalUrl()">
|
17
umbraco-cms/app/umbracocms/Views/Partials/skills.cshtml
Normal file
17
umbraco-cms/app/umbracocms/Views/Partials/skills.cshtml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
@inherits UmbracoViewPage<ContentModels.IWorkHistoryControls>
|
||||||
|
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
|
||||||
|
<div class="skills portfolio-info-card">
|
||||||
|
<h2>@Model.SkillsTitle</h2>
|
||||||
|
@if (Model.Skills != null && Model.Skills.Any())
|
||||||
|
{
|
||||||
|
foreach (var item in Model.Skills)
|
||||||
|
{
|
||||||
|
<h3>@item.Skill</h3>
|
||||||
|
<div class="progress">
|
||||||
|
<div class="progress-bar" aria-valuenow="@(item.Rating)" aria-valuemin="0" aria-valuemax="100" style="width: @(item.Rating)%;"><span class="sr-only">@(item.Rating)%</span></div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</div>
|
@ -0,0 +1,25 @@
|
|||||||
|
@inherits UmbracoViewPage<ContentModels.Home>
|
||||||
|
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
|
||||||
|
@{
|
||||||
|
var pages = Model?.Children().Where(x => x.IsVisible()) ?? Enumerable.Empty<IPublishedContent>();
|
||||||
|
}
|
||||||
|
|
||||||
|
<nav class="navbar navbar-dark navbar-expand-lg fixed-top bg-primary portfolio-navbar">
|
||||||
|
<div class="container">
|
||||||
|
<a class="navbar-brand logo" href="@Model.Url()">@(Model.SiteName)</a><button data-toggle="collapse" class="navbar-toggler" data-target="#navbarNav"><span class="sr-only">Toggle navigation</span><span class="navbar-toggler-icon"></span></button>
|
||||||
|
<div class="collapse navbar-collapse" id="navbarNav">
|
||||||
|
<ul class="navbar-nav ml-auto">
|
||||||
|
<li class="nav-item"><a class="nav-link active" href="@Model.Url()">@Model.Name</a></li>
|
||||||
|
@if (pages != null && pages.Any())
|
||||||
|
{
|
||||||
|
@foreach (var item in pages)
|
||||||
|
{
|
||||||
|
<li class="nav-item"><a class="nav-link active" href="@item.Url()">@item.Name</a></li>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
25
umbraco-cms/app/umbracocms/Views/Partials/workHistory.cshtml
Normal file
25
umbraco-cms/app/umbracocms/Views/Partials/workHistory.cshtml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
@inherits UmbracoViewPage<ContentModels.IWorkHistoryControls>
|
||||||
|
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
|
||||||
|
<div class="work-experience group">
|
||||||
|
<div class="heading">
|
||||||
|
<h2 class="text-center">@Model.WorkHistoryTitle</h2>
|
||||||
|
</div>
|
||||||
|
@if (Model.WorkHistory != null && Model.WorkHistory.Any())
|
||||||
|
{
|
||||||
|
foreach (var item in Model.WorkHistory)
|
||||||
|
{
|
||||||
|
<div class="item">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<h3>@item.Title</h3>
|
||||||
|
<h4 class="organization">@item.PlaceName</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6"><span class="period">@item.StartDate.ToString("MM/yyyy") - @(item.EndDate != null && item.EndDate > DateTime.MinValue ? item.EndDate.ToString("MM/yyyy") : "Present")</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="text-muted">@item.Details</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</div>
|
63
umbraco-cms/app/umbracocms/Views/Project.cshtml
Normal file
63
umbraco-cms/app/umbracocms/Views/Project.cshtml
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<ContentModels.Project>
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
|
||||||
|
@using Portfolio.Core.Extensions
|
||||||
|
|
||||||
|
@{
|
||||||
|
Layout = "Master.cshtml";
|
||||||
|
var projectList = Model.Parent;
|
||||||
|
var otherProjects = projectList.Children<ContentModels.Project>().Where(x => x.Id != Model.Id);
|
||||||
|
var title = Model.Value<string>("title", fallback: Fallback.ToDefaultValue, defaultValue: Model.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
<main class="page project-page">
|
||||||
|
<section class="portfolio-block project">
|
||||||
|
<div class="container">
|
||||||
|
<div class="heading">
|
||||||
|
<h1 class="font-weight-bold text-uppercase">@title</h1>
|
||||||
|
</div>
|
||||||
|
@if (Model.MainImage != null)
|
||||||
|
{
|
||||||
|
<div class="image" style="background-image: url('@Model.MainImage.GetCropUrl(width: 1110, height: 450)');"></div>
|
||||||
|
}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 col-md-6 offset-md-1 info">
|
||||||
|
<h3>Description</h3>
|
||||||
|
@Model.Description
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-md-3 offset-md-1 meta">
|
||||||
|
<div class="tags">
|
||||||
|
@if (Model.ProjectDate != null && Model.ProjectDate > DateTime.MinValue)
|
||||||
|
{
|
||||||
|
<span class="meta-heading">Date</span>
|
||||||
|
<span>@Model.ProjectDate.ToString("dd MMM yyyy")</span>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if (otherProjects != null && otherProjects.Any())
|
||||||
|
{
|
||||||
|
<div class="more-projects">
|
||||||
|
<h3 class="text-center">More Projects</h3>
|
||||||
|
<div class="row gallery">
|
||||||
|
@foreach (var project in otherProjects)
|
||||||
|
{
|
||||||
|
var projectContentItem = (IPublishedContent)project;
|
||||||
|
<div class="col-md-4 col-lg-3 mx-auto">
|
||||||
|
<div class="item">
|
||||||
|
<a href="@project.Url()" title="@projectContentItem.GetPageTitle()">
|
||||||
|
@if (project.MainImage != null)
|
||||||
|
{
|
||||||
|
<img class="img-fluid scale-on-hover" src="@project.MainImage.GetCropUrl(width: 663, height: 442)">
|
||||||
|
}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
36
umbraco-cms/app/umbracocms/Views/ProjectList.cshtml
Normal file
36
umbraco-cms/app/umbracocms/Views/ProjectList.cshtml
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<ContentModels.ProjectList>
|
||||||
|
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
|
||||||
|
@using Portfolio.Core.Extensions
|
||||||
|
|
||||||
|
@{
|
||||||
|
Layout = "Master.cshtml";
|
||||||
|
var projects = Model.Children<ContentModels.Project>().Where(x => x.IsVisible());
|
||||||
|
}
|
||||||
|
|
||||||
|
<main class="page projets-page">
|
||||||
|
<section class="portfolio-block projects compact-grid">
|
||||||
|
<div class="heading">
|
||||||
|
<h1 class="text-uppercase font-weight-bold">@Model.Title</h1>
|
||||||
|
</div>
|
||||||
|
@if (projects != null && projects.Any())
|
||||||
|
{
|
||||||
|
<div class="row no-gutters">
|
||||||
|
@foreach (var project in projects)
|
||||||
|
{
|
||||||
|
<div class="col-md-6 col-lg-4 item zoom-on-hover">
|
||||||
|
<a href="@project.Url()">
|
||||||
|
@if (project.MainImage != null)
|
||||||
|
{
|
||||||
|
<img class="img-fluid image" src="@project.MainImage.GetCropUrl(width: 976, height: 650)" alt="@project.MainImage.GetAltText()">
|
||||||
|
}
|
||||||
|
<span class="description">
|
||||||
|
<span class="description-heading">@project.Name</span>
|
||||||
|
<span class="description-body">@project.MetaDescription</span>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</section>
|
||||||
|
</main>
|
7
umbraco-cms/app/umbracocms/wwwroot/portfolio-assets/bootstrap.min.css
vendored
Normal file
7
umbraco-cms/app/umbracocms/wwwroot/portfolio-assets/bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
7
umbraco-cms/app/umbracocms/wwwroot/portfolio-assets/bootstrap.min.js
vendored
Normal file
7
umbraco-cms/app/umbracocms/wwwroot/portfolio-assets/bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
umbraco-cms/app/umbracocms/wwwroot/portfolio-assets/ionicons.eot
Normal file
BIN
umbraco-cms/app/umbracocms/wwwroot/portfolio-assets/ionicons.eot
Normal file
Binary file not shown.
11
umbraco-cms/app/umbracocms/wwwroot/portfolio-assets/ionicons.min.css
vendored
Normal file
11
umbraco-cms/app/umbracocms/wwwroot/portfolio-assets/ionicons.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
2230
umbraco-cms/app/umbracocms/wwwroot/portfolio-assets/ionicons.svg
Normal file
2230
umbraco-cms/app/umbracocms/wwwroot/portfolio-assets/ionicons.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 326 KiB |
BIN
umbraco-cms/app/umbracocms/wwwroot/portfolio-assets/ionicons.ttf
Normal file
BIN
umbraco-cms/app/umbracocms/wwwroot/portfolio-assets/ionicons.ttf
Normal file
Binary file not shown.
Binary file not shown.
2
umbraco-cms/app/umbracocms/wwwroot/portfolio-assets/jquery.min.js
vendored
Normal file
2
umbraco-cms/app/umbracocms/wwwroot/portfolio-assets/jquery.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,5 @@
|
|||||||
|
$('.datepicker').each(function(){
|
||||||
|
var picker = new Pikaday({
|
||||||
|
field: this
|
||||||
|
});
|
||||||
|
});
|
3
umbraco-cms/notes.md
Normal file
3
umbraco-cms/notes.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
docker build --tag=db .\db
|
||||||
|
|
||||||
|
docker run --name db -p 1433:1433 --volume sqlserver:/var/opt/sqlserver -d db
|
@ -1,11 +1,12 @@
|
|||||||
# Umbraco CMS Docker compose file
|
# Umbraco CMS Docker compose file
|
||||||
|
|
||||||
This sample project will start up the [Umbraco CMS](https://github.com/umbraco/Umbraco-CMS/) in a Docker container, with an attached database container running SQL Server. This site also uses a template starter kit which is built on the Portfolio demo from Paul Seal
|
This sample project will start up the [Umbraco CMS](https://github.com/umbraco/Umbraco-CMS/) in a Docker container, with an attached database container running SQL Server. This site also uses a template starter kit which is built on the [Portfolio demo](https://github.com/prjseal/Portfolio-Starter-Kit-fo-Umbraco) from Paul Seal.
|
||||||
|
|
||||||
Project structure:
|
Project structure:
|
||||||
```
|
```
|
||||||
.
|
.
|
||||||
├── app
|
├── app
|
||||||
|
│ ├── db
|
||||||
│ ├── umbracocms
|
│ ├── umbracocms
|
||||||
| │ ├── Dockerfile
|
| │ ├── Dockerfile
|
||||||
| | └── ...
|
| | └── ...
|
||||||
|
Loading…
Reference in New Issue
Block a user