Compare commits

..

3 Commits

Author SHA1 Message Date
f838943827
point pages to user injected navbar controller 2023-10-11 20:42:58 +00:00
17d8e1413b
doc change 2023-10-10 19:46:10 +00:00
Audrey Jensen
818a9d1edd
add navbar item config file 2023-10-10 19:43:48 +00:00
17 changed files with 67 additions and 260 deletions

View File

@ -1,23 +0,0 @@
name: Intranet Deployment
on:
push:
branches:
- master
jobs:
Deploy:
name: Deploy Project files
runs-on: intranet
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
SSH-KEY: ${{secrets.read_key}}
SSH-KNOWN-HOSTS: gitea.jv.com,192.168.0.214 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHsv90d6ofdNgJx0W6zPTVpouqDeF/qv/L0guzFBg6YON4jiubCovUZ0h7M8ipg/kXACHLfNBWAmNvsaGrPpHNU=
SSH-STRICT: 'false'
- name: Copy files to project dir
run: xcopy /E /I /Y /V . ${{ vars.PROD_DEPLOY_DIR }}
- name: Update Composer Packages
working-directory: ${{ vars.PROD_DEPLOY_DIR }}
run: composer update --no-interaction --working-dir=${{ vars.PROD_DEPLOY_DIR }}

View File

@ -1,5 +0,0 @@
{
"gitea.owner": "audrey",
"gitea.repo": "intranet",
"gitea.instanceURL": "https://gitea.jv.com"
}

View File

@ -1,5 +1,3 @@
![Deployed](https://gitea.jv.com/audrey/intranet/actions/workflows/deploy.yaml/badge.svg)
[Install](#install) [Install](#install)
[Configuring IIS](#iis-configuration) [Configuring IIS](#iis-configuration)
[Updating](#updating) [Updating](#updating)

170
composer.lock generated
View File

@ -4,84 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "6c9cd0fccf203daf66cab2a05cf2e389", "content-hash": "5625360c4bf0ca4c404a3a47e7b43354",
"packages": [ "packages": [
{
"name": "doctrine/annotations",
"version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/annotations.git",
"reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f",
"reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f",
"shasum": ""
},
"require": {
"doctrine/lexer": "^2 || ^3",
"ext-tokenizer": "*",
"php": "^7.2 || ^8.0",
"psr/cache": "^1 || ^2 || ^3"
},
"require-dev": {
"doctrine/cache": "^2.0",
"doctrine/coding-standard": "^10",
"phpstan/phpstan": "^1.8.0",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"symfony/cache": "^5.4 || ^6",
"vimeo/psalm": "^4.10"
},
"suggest": {
"php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "Docblock Annotations Parser",
"homepage": "https://www.doctrine-project.org/projects/annotations.html",
"keywords": [
"annotations",
"docblock",
"parser"
],
"support": {
"issues": "https://github.com/doctrine/annotations/issues",
"source": "https://github.com/doctrine/annotations/tree/2.0.1"
},
"time": "2023-02-02T22:02:53+00:00"
},
{ {
"name": "doctrine/cache", "name": "doctrine/cache",
"version": "2.2.0", "version": "2.2.0",
@ -2084,84 +2008,6 @@
}, },
"time": "2021-07-14T16:46:02+00:00" "time": "2021-07-14T16:46:02+00:00"
}, },
{
"name": "sensio/framework-extra-bundle",
"version": "v6.2.10",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
"reference": "2f886f4b31f23c76496901acaedfedb6936ba61f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/2f886f4b31f23c76496901acaedfedb6936ba61f",
"reference": "2f886f4b31f23c76496901acaedfedb6936ba61f",
"shasum": ""
},
"require": {
"doctrine/annotations": "^1.0|^2.0",
"php": ">=7.2.5",
"symfony/config": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/framework-bundle": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^4.4|^5.0|^6.0"
},
"conflict": {
"doctrine/doctrine-cache-bundle": "<1.3.1",
"doctrine/persistence": "<1.3"
},
"require-dev": {
"doctrine/dbal": "^2.10|^3.0",
"doctrine/doctrine-bundle": "^1.11|^2.0",
"doctrine/orm": "^2.5",
"symfony/browser-kit": "^4.4|^5.0|^6.0",
"symfony/doctrine-bridge": "^4.4|^5.0|^6.0",
"symfony/dom-crawler": "^4.4|^5.0|^6.0",
"symfony/expression-language": "^4.4|^5.0|^6.0",
"symfony/finder": "^4.4|^5.0|^6.0",
"symfony/monolog-bridge": "^4.0|^5.0|^6.0",
"symfony/monolog-bundle": "^3.2",
"symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0",
"symfony/security-bundle": "^4.4|^5.0|^6.0",
"symfony/twig-bundle": "^4.4|^5.0|^6.0",
"symfony/yaml": "^4.4|^5.0|^6.0",
"twig/twig": "^1.34|^2.4|^3.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "6.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Sensio\\Bundle\\FrameworkExtraBundle\\": "src/"
},
"exclude-from-classmap": [
"/tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "This bundle provides a way to configure your controllers with annotations",
"keywords": [
"annotations",
"controllers"
],
"support": {
"source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.2.10"
},
"abandoned": "Symfony",
"time": "2023-02-24T14:57:12+00:00"
},
{ {
"name": "symfony/asset", "name": "symfony/asset",
"version": "v6.3.0", "version": "v6.3.0",
@ -5641,16 +5487,16 @@
}, },
{ {
"name": "symfony/runtime", "name": "symfony/runtime",
"version": "v6.3.12", "version": "v6.3.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/runtime.git", "url": "https://github.com/symfony/runtime.git",
"reference": "a8d2b8f6033a33c224b43065a10bab5e4f0be486" "reference": "8e83b5d8e0ace903e1a91dedfe08a84ed2a54b0d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/runtime/zipball/a8d2b8f6033a33c224b43065a10bab5e4f0be486", "url": "https://api.github.com/repos/symfony/runtime/zipball/8e83b5d8e0ace903e1a91dedfe08a84ed2a54b0d",
"reference": "a8d2b8f6033a33c224b43065a10bab5e4f0be486", "reference": "8e83b5d8e0ace903e1a91dedfe08a84ed2a54b0d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5700,7 +5546,7 @@
"runtime" "runtime"
], ],
"support": { "support": {
"source": "https://github.com/symfony/runtime/tree/v6.3.12" "source": "https://github.com/symfony/runtime/tree/v6.3.1"
}, },
"funding": [ "funding": [
{ {
@ -5716,7 +5562,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-01-23T14:35:58+00:00" "time": "2023-06-21T12:08:28+00:00"
}, },
{ {
"name": "symfony/security-bundle", "name": "symfony/security-bundle",
@ -9634,5 +9480,5 @@
"ext-iconv": "*" "ext-iconv": "*"
}, },
"platform-dev": [], "platform-dev": [],
"plugin-api-version": "2.2.0" "plugin-api-version": "2.3.0"
} }

View File

@ -11,5 +11,4 @@ return [
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
]; ];

15
config/navbar.yaml Normal file
View File

@ -0,0 +1,15 @@
# To add a new button: copy the template below.
# Label: This is the text displayed on the navbar item
# Type: Intern (Internal Link), Extern (External link, default), File (locally hosted files)
# URI: Resource locator. For Internal links, this is the route's friendly name. If you don't know this, then set an External link to the page.
# Disabled: Defaults to false. If true, button becomes unclickable.
# TEMPLATE
# - { Label: Example, Type: Extern, URI: "example.com", Disabled: False}
Buttons:
- { Label: Cram-A-Lot, Type: Extern, URI: "https://www.cram-a-lot.com/", Disabled: False}
- { Label: Office 365, Type: Extern, URI: "https://myapps.microsoft.com/", Disabled: False}
- { Label: Directory, Type: Extern, URI: "http://site:81/directory/home.php", Disabled: False}
- { Label: Software Basics, Type: File, URI: "documents/JV Software Basics.docx", Disabled: False}
- { Label: Safety Training, Type: Intern, URI: "safetyHome", Disabled: False}
- { Label: Anonymous Comment, Type: Intern, URI: "complaint", Disabled: False}

View File

@ -1,3 +0,0 @@
sensio_framework_extra:
router:
annotations: false

View File

@ -19,7 +19,7 @@ use Symfony\Component\Mime\Address;
class ComplaintController extends AbstractController class ComplaintController extends AbstractController
{ {
#[Route('/complaint/anon', name: 'complaint')] #[Route('/complaint/anon', name: 'complaint')]
public function Index(Request $request, TransportTransportInterface $mailer,LoggerInterface $log) : Response public function Index(Request $request, TransportTransportInterface $mailer,LoggerInterface $log, NavbarController $_navbar) : Response
{ {
$form = $this->createForm(AnonymousComplaintType::class); $form = $this->createForm(AnonymousComplaintType::class);
$form->handleRequest($request); $form->handleRequest($request);
@ -33,7 +33,7 @@ class ComplaintController extends AbstractController
{ {
$sendMail = null; $sendMail = null;
} }
return $this->render('complaint.html.twig',['form' => $form, 'isSubmitted' => $sendMail, 'complaintReceiverName' => $_SERVER['COMPLAINT_RECIPIENT_NAME']]); return new Response($_navbar->navbar() . $this->renderView('complaint.html.twig',['form' => $form, 'isSubmitted' => $sendMail, 'complaintReceiverName' => $_SERVER['COMPLAINT_RECIPIENT_NAME']]));
} }
public function sendEmail(TransportTransportInterface $mailer, string $message, LoggerInterface $log) : bool public function sendEmail(TransportTransportInterface $mailer, string $message, LoggerInterface $log) : bool
{ {

View File

@ -0,0 +1,21 @@
<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Yaml\Yaml;
use Symfony\Component\HttpKernel\Attribute\AsController;
use Twig\Environment;
#[AsController]
class NavbarController
{
public function __construct(private Environment $twig){}
public function navbar() : string
{
$contentFile = Yaml::parseFile('../config/navbar.yaml', 2, 2, Yaml::PARSE_OBJECT_FOR_MAP);
$content = $this->twig->render('_navbar.html.twig', $contentFile);
return $content;
}
}

View File

@ -8,10 +8,12 @@ use jv\intranet\Types\NavbarItem;
class PortalController extends AbstractController class PortalController extends AbstractController
{ {
#[Route('/')] #[Route('/')]
public function page() : Response public function page(NavbarController $navbar) : Response
{ {
$navbar = $navbar->navbar();
$contentFile = Yaml::parseFile('../config/portalLinks.yaml', 2, 2, Yaml::PARSE_OBJECT_FOR_MAP); $contentFile = Yaml::parseFile('../config/portalLinks.yaml', 2, 2, Yaml::PARSE_OBJECT_FOR_MAP);
return $this->render('portal.html.twig',$contentFile); $page = $this->render('portal.html.twig',$contentFile);
return new Response($navbar . $page->getContent());
} }
} }

View File

@ -14,14 +14,17 @@ use function PHPUnit\Framework\containsIdentical;
class SafetyController extends AbstractController class SafetyController extends AbstractController
{ {
#[Route('/training/safety', name: 'safetyHome')] #[Route('/training/safety', name: 'safetyHome')]
public function Index() : Response public function Index(NavbarController $_navbar) : Response
{ {
$contentFile = Yaml::parseFile('../config/safetyLinks.yaml', 2, 2, Yaml::PARSE_OBJECT_FOR_MAP); $contentFile = Yaml::parseFile('../config/safetyLinks.yaml', 2, 2, Yaml::PARSE_OBJECT_FOR_MAP);
return $this->render('Training/Safety/safetyHome.html.twig',['content' => $contentFile]); $navbar = $_navbar->navbar();
return new Response($navbar . $this->renderView('Training/Safety/safetyHome.html.twig',['content' => $contentFile]));
} }
#[Route('/training/safety/quiz')] #[Route('/training/safety/quiz')]
public function Quiz(Request $request, LoggerInterface $log) public function Quiz(Request $request, LoggerInterface $log, NavbarController $_navbar)
{ {
$form = $this->createForm(SafetyQuizType::class); $form = $this->createForm(SafetyQuizType::class);
$form->handleRequest($request); $form->handleRequest($request);
@ -43,10 +46,10 @@ class SafetyController extends AbstractController
return $this->render('Training/Safety/quizResults.html.twig', ['testerName'=>$testerName, return $this->render('Training/Safety/quizResults.html.twig', ['testerName'=>$testerName,
'correctAnswers'=>$correctAnswers, 'totalAnswers'=>count($data)]); 'correctAnswers'=>$correctAnswers, 'totalAnswers'=>count($data)]);
} }
return $this->render('Training/Safety/SafetyQuiz.html.twig',['quiz'=>$form]); return new Response($navbar = $_navbar->navbar() . $this->renderView('Training/Safety/SafetyQuiz.html.twig',['quiz'=>$form]));
} }
#[Route('/Training/Safety/Topics/{topic?}')] #[Route('/Training/Safety/Topics/{topic?}')]
public function Topics(?string $topic, LoggerInterface $log) : Response public function Topics(?string $topic, LoggerInterface $log, NavbarController $navbar) : Response
{ {
//We want to show the safety homepage if this is blank //We want to show the safety homepage if this is blank
if($topic == null) if($topic == null)
@ -96,7 +99,7 @@ class SafetyController extends AbstractController
$topic = strtolower($topic); $topic = strtolower($topic);
//Render the page header //Render the page header
$header = $this->renderView('_header.html.twig') . $this->renderView ('_navbar.html.twig'); $header = $navbar->navbar();
//prepare navButton data //prepare navButton data
$navButtonData = ['previous'=> $previousTopic, 'next' => $nextTopic]; $navButtonData = ['previous'=> $previousTopic, 'next' => $nextTopic];
$contents = $this->renderView('Training/Safety/Topics/'.$topic.".html.twig"); //render main page contents $contents = $this->renderView('Training/Safety/Topics/'.$topic.".html.twig"); //render main page contents

View File

@ -1,13 +1,4 @@
{ {
"doctrine/annotations": {
"version": "2.0",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "1.10",
"ref": "64d8583af5ea57b7afa4aba4b159907f3a148b05"
}
},
"doctrine/doctrine-bundle": { "doctrine/doctrine-bundle": {
"version": "2.10", "version": "2.10",
"recipe": { "recipe": {
@ -49,18 +40,6 @@
"tests/bootstrap.php" "tests/bootstrap.php"
] ]
}, },
"sensio/framework-extra-bundle": {
"version": "6.2",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "5.2",
"ref": "fb7e19da7f013d0d422fa9bce16f5c510e27609b"
},
"files": [
"config/packages/sensio_framework_extra.yaml"
]
},
"symfony/console": { "symfony/console": {
"version": "6.3", "version": "6.3",
"recipe": { "recipe": {

View File

@ -1,10 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
{{ include('_header.html.twig') }}
<body> <body>
{{ include('_navbar.html.twig')}}
<div class="container"> <div class="container">
<h4>Complete the Safety Quiz below</h4> <h4>Complete the Safety Quiz below</h4>
<p>When you're finished, click 'Submit' at the bottom and print your results. <p>When you're finished, click 'Submit' at the bottom and print your results.

View File

@ -1,10 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
{{ include('_header.html.twig') }}
<body> <body>
{{ include('_navbar.html.twig')}}
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
@ -37,24 +33,11 @@
</div> </div>
</div> </div>
{% endfor %} {% endfor %}
</div>
{# Forklift Training #}
<div class="card-group">
<div class="card text-center service-card">
<div class="card-body">
<div class="card-header">
<h5 class="card-title">Forklift Training</h5>
</div>
<div class="card-text">
<ul class="list-group list-group-flush">
<a class="list-group-item list-group-item-action list-item" href="https://sunbeltrentals.csod.com/login/render.aspx?id=defaultclp">Account Creation</a>
<a class="list-group-item list-group-item-action list-item" href="https://www.sunbeltrentals.com/training/safety/">Training</a>
</ul>
</div>
</div>
</div>
</div>
</div> </div>
</div>
</body> </body>
</html> </html>

View File

@ -1,3 +1,4 @@
{{ include('_header.html.twig') }}
<!-- Navigation --> <!-- Navigation -->
<div class="siteNavbar"> <div class="siteNavbar">
<ul class="list-group list-group-horizontal-md"> <ul class="list-group list-group-horizontal-md">

View File

@ -1,17 +1,13 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
{{ include('_header.html.twig') }}
<body> <body>
{{ include('_navbar.html.twig')}}
<div class="container"> <div class="container">
<h2>Anonymous Comment Page <h2>Anonymous Complaint Page
<h4 class="text-bold">Instructions</h4> <h4 class="text-bold">Instructions</h4>
<p>Type your complaint or problem into the message box below and click "Submit". <p>Type your complaint or problem into the message box below and click "Submit".
<br>Messages will be sent directly to {{ complaintReceiverName }}'s email account. <br>Messages will be sent directly to {{ complaintReceiverName }}'s email account.
<br>Messages will be completely anonymous so comments cannot be traced to a specific person. <br>Messages will be completely anonymous so complaints cannot be traced to a specific person.
<br> Feel free to submit any problem or concern. <br> Feel free to submit any problem or concern.
<br><strong>Note: If you add personally identifying information (such as your name) then this won't be anonymous. Avoid this, unless you want your identity to be known</strong> <br><strong>Note: If you add personally identifying information (such as your name) then this won't be anonymous. Avoid this, unless you want your identity to be known</strong>
</p> </p>

View File

@ -1,9 +1,8 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
{{ include('_header.html.twig') }}
<body> <body>
{{ include('_navbar.html.twig')}}
<div class="container"> <div class="container">
<div class="row g-1 my-2"> <div class="row g-1 my-2">
<!--Emergency Card --> <!--Emergency Card -->