26 Commits

Author SHA1 Message Date
ed4ac6d621 Re-add and renew webmail/email info page 2024-08-21 17:01:59 +02:00
903952a972 Revert "navbar: redirect webmail to modern roundcube"
This reverts commit 3e1a21741f.
2024-08-21 16:16:54 +02:00
c62f4d4705 www/tjenester: update wiki link for hjemmesider 2024-08-21 10:46:43 +02:00
814e5bc6c7 www/tjenester: move nettsiden from github to gitea 2024-08-21 10:46:43 +02:00
f57edf60c1 flake.nix: remove abundant todos
One had already been fixed, the other one has been converted to a proper
issue on gitea
2024-08-21 07:37:08 +02:00
a29d3fe803 Err, try again 2024-08-17 23:59:17 +02:00
8bcadd1d2d Merge pull request 'Replace deprecated functions to support php 8.3' (#68) from php83-fixes-fr-fr into master
Reviewed-on: #68
Reviewed-by: Oystein Kristoffer Tveit <oysteikt@pvv.ntnu.no>
2024-08-17 20:45:08 +02:00
8a82e2795c Various: Replace deprecated functions to support php 8.3 2024-08-17 18:31:43 +02:00
4ee8b73044 nix/shell: create slideshow dir 2024-08-17 01:35:14 +02:00
6580cfe546 Merge pull request 'treewide: flip arg order for implode()' (#63) from i-am-imploding into master
Reviewed-on: #63
Reviewed-by: Felix Albrigtsen <felixalb@pvv.ntnu.no>
2024-08-04 00:08:52 +02:00
a0f9e71d46 treewide: flip arg order for implode() 2024-08-04 00:01:34 +02:00
6e4a79ed3d Merge pull request 'Calendar: Remove recurring events for summer break 2024' (#61) from calendar-disable-events into master
Reviewed-on: #61
2024-06-15 00:36:32 +02:00
ce99b309f8 Calendar: Remove recurring events for summer break 2024 2024-06-11 17:09:35 +02:00
37445f42b5 Merge pull request 'Oppdater Matrix-server til Matrix Space™' (#50) from info-updates into master
Reviewed-on: #50
2024-05-30 21:19:42 +02:00
9717c11af5 Fix discord-server og matrix space 2024-05-30 21:19:29 +02:00
2cab4df4b1 Merge pull request 'fix: updated spaceapi coords' (#60) from adriangl-patch-spaceapi-coords into master
Reviewed-on: #60
2024-05-19 22:25:52 +02:00
18c8426246 fix: updated spaceapi coords 2024-05-19 22:09:37 +02:00
4890a0af04 nix/module: fix spaceapi endpoint 2024-05-19 20:06:22 +02:00
7bf2c31db3 feat: adds spaceapi endpoint (#57)
A basic implementation of the https://spaceapi.io/ specification.
Tested working door sensor status. Added basic info about us, our website, git forge and wiki.

Co-authored with @sindos and @oysteikt.

Reviewed-on: #57
Co-authored-by: Felix Albrigtsen <felix@albrigtsen.it>
Co-committed-by: Felix Albrigtsen <felix@albrigtsen.it>
2024-05-18 20:05:13 +02:00
13a6df92ce Merge pull request 'Gitea istedenfor gogs på tjenester-siden' (#56) from gitea-i-tjenester into master
Reviewed-on: #56
2024-05-11 22:55:36 +02:00
f87c6820d7 services: move gitea above github and remove trac 2024-05-07 21:31:42 +02:00
592c6d46c4 services: replaced gogs with gitea 2024-05-07 21:31:20 +02:00
9d9d99e6ba gallery: sort by timestamp. slideshow: fix transition bug on firefox 2024-04-14 01:59:12 +02:00
216e153f89 nix/module: correct some nginx locations directives 2024-04-11 13:19:59 +02:00
d528df5f99 Merge pull request 'Fix links after moving from spikkje to bekka' (#55) from www2-www-fixes into master
Reviewed-on: #55
2024-04-11 00:43:32 +02:00
faf93cc45a Fix links after moving from spikkje to bekka 2024-04-11 00:42:12 +02:00
32 changed files with 256 additions and 167 deletions

View File

@@ -33,9 +33,5 @@
devShells = forAllSystems (system: pkgs: { devShells = forAllSystems (system: pkgs: {
default = pkgs.callPackage ./nix/shell.nix { inherit pkgs; }; default = pkgs.callPackage ./nix/shell.nix { inherit pkgs; };
}); });
# TODO:
# - Relicense the project to GPL or something
# - Write a module for the project
}; };
} }

View File

@@ -24,9 +24,9 @@ use \pvv\side\Agenda;
$agenda = new \pvv\side\Agenda([ $agenda = new \pvv\side\Agenda([
// new \pvv\side\social\NerdepitsaActivity, // new \pvv\side\social\NerdepitsaActivity,
// new \pvv\side\social\AnimekveldActivity, // new \pvv\side\social\AnimekveldActivity,
new \pvv\side\social\HackekveldActivity, // new \pvv\side\social\HackekveldActivity,
new \pvv\side\social\BrettspillActivity, // new \pvv\side\social\BrettspillActivity,
new \pvv\side\social\DriftkveldActivity, // new \pvv\side\social\DriftkveldActivity,
new \pvv\side\DBActivity($pdo), new \pvv\side\DBActivity($pdo),
]); ]);

View File

@@ -8,7 +8,7 @@ function navbar($depth, $active = NULL) {
//'Aktiviteter' => 'aktiviteter', //'Aktiviteter' => 'aktiviteter',
'Prosjekter' => 'prosjekt', 'Prosjekter' => 'prosjekt',
'Kontakt' => 'kontakt', 'Kontakt' => 'kontakt',
'Webmail' => 'https://webmail2.pvv.ntnu.no/roundcube/', 'Webmail' => 'webmail',
'Galleri' => 'galleri', 'Galleri' => 'galleri',
'Wiki' => 'https://wiki.pvv.ntnu.no/', 'Wiki' => 'https://wiki.pvv.ntnu.no/',
'Git' => 'https://git.pvv.ntnu.no/', 'Git' => 'https://git.pvv.ntnu.no/',

View File

@@ -217,14 +217,14 @@ in
''; '';
}; };
${cfg.settings.GALLERY.SERVER_PATH} = { "^~ ${cfg.settings.GALLERY.SERVER_PATH}" = {
root = cfg.settings.GALLERY.DIR; root = cfg.settings.GALLERY.DIR;
extraConfig = '' extraConfig = ''
rewrite ^${cfg.settings.GALLERY.SERVER_PATH}/(.*)$ /$1 break; rewrite ^${cfg.settings.GALLERY.SERVER_PATH}/(.*)$ /$1 break;
''; '';
}; };
${cfg.settings.SLIDESHOW.SERVER_PATH} = { "^~ ${cfg.settings.SLIDESHOW.SERVER_PATH}" = {
root = cfg.settings.SLIDESHOW.DIR; root = cfg.settings.SLIDESHOW.DIR;
extraConfig = '' extraConfig = ''
rewrite ^${cfg.settings.SLIDESHOW.SERVER_PATH}/(.*)$ /$1 break; rewrite ^${cfg.settings.SLIDESHOW.SERVER_PATH}/(.*)$ /$1 break;

View File

@@ -20,6 +20,10 @@ pkgs.mkShellNoCC {
test -e config.php || cp -v dist/config.local.php config.php test -e config.php || cp -v dist/config.local.php config.php
if [ ! -d www/galleri/bilder/slideshow ] ; then
mkdir -p www/galleri/bilder/slideshow
fi
if [ ! -d vendor ] ; then if [ ! -d vendor ] ; then
composer install || exit $? composer install || exit $?

View File

@@ -6,6 +6,8 @@ use \DateInterval;
class Agenda { class Agenda {
private $activities;
const TODAY = 0; const TODAY = 0;
const TOMORROW = 1; const TOMORROW = 1;
const THIS_WEEK = 2; const THIS_WEEK = 2;
@@ -18,7 +20,7 @@ class Agenda {
} }
public static function getFormattedDate($date) { public static function getFormattedDate($date) {
return trim(strftime('%A %e. %b %H.%M', $date->getTimeStamp())); return $date->format("l j. M H.i");
} }
public function getEventsBetween(DateTimeImmutable $from, DateTimeImmutable $to) { public function getEventsBetween(DateTimeImmutable $from, DateTimeImmutable $to) {

View File

@@ -5,6 +5,7 @@ use \DateTimeImmutable;
use \PDO; use \PDO;
class DBActivity implements Activity { class DBActivity implements Activity {
private $pdo;
public function __construct(PDO $pdo) { public function __construct(PDO $pdo) {
$this->pdo = $pdo; $this->pdo = $pdo;

View File

@@ -24,7 +24,7 @@ abstract class Event {
return 'i morgen'; return 'i morgen';
} }
if (Agenda::isThisWeek($this->getStart()) || $this->getStart()->sub(new DateInterval('P4D'))->getTimestamp() < time()) { if (Agenda::isThisWeek($this->getStart()) || $this->getStart()->sub(new DateInterval('P4D'))->getTimestamp() < time()) {
return strftime('%A', $this->getStart()->getTimestamp()); return $this->getStart()->format("l");
} }
if (Agenda::isNextWeek($this->getStart())) { if (Agenda::isNextWeek($this->getStart())) {
return 'neste uke'; return 'neste uke';
@@ -32,7 +32,7 @@ abstract class Event {
if (Agenda::isThisMonth($this->getStart())) { if (Agenda::isThisMonth($this->getStart())) {
return 'denne måneden'; return 'denne måneden';
} }
return trim(strftime('%e. %B', $this->getStart()->getTimestamp())); return $this->getStart()->format("j. F");
} }
public abstract function getStop(); /* : DateTimeImmutable */ public abstract function getStop(); /* : DateTimeImmutable */

View File

@@ -5,7 +5,7 @@ class SimpleEvent extends Event {
private $id, $name, $descr, $start, $end, $org, $loc; private $id, $name, $descr, $start, $end, $org, $loc;
public function __construct($id, $name,\DateTimeImmutable $start,\DateTimeImmutable $end,$org, $loc, $descr, $isDBEvent = false){ public function __construct($id, $name,\DateTimeImmutable $start,\DateTimeImmutable $end,$org, $loc, $descr, $_isDBEvent = false){
$this->id = $id; $this->id = $id;
$this->name = $name; $this->name = $name;
$this->start = $start; $this->start = $start;
@@ -13,7 +13,6 @@ class SimpleEvent extends Event {
$this->org = $org; $this->org = $org;
$this->loc = $loc; $this->loc = $loc;
$this->descr = explode("\n", $descr); $this->descr = explode("\n", $descr);
$this->isDBEvent = $isDBEvent;
} }
public function getID(){ public function getID(){
@@ -52,10 +51,6 @@ class SimpleEvent extends Event {
return $this->descr; return $this->descr;
} }
public function isDBEvent() {
return $this->isDBEvent;
}
public function getColor() { public function getColor() {
return "#3b7"; return "#3b7";
} }

View File

@@ -38,7 +38,6 @@ class AnimekveldEvent extends Event {
'', '',
'Alle kan være med på å anbefale eller veto serier.', 'Alle kan være med på å anbefale eller veto serier.',
'', '',
'I disse tider blir visningene i all hovedsak holdt online på vår <a href="https://discord.gg/cx4aXU7">Discord server</a>'
]; ];
} }

View File

@@ -105,7 +105,7 @@ else {
</div> </div>
<p class="subtitle">Beskrivelse (<i>markdown</i>)</p> <p class="subtitle">Beskrivelse (<i>markdown</i>)</p>
<textarea name="desc" rows="8" class="boxinput" placeholder="Beskrivese" required><?= implode($event->getDescription(), "\n"); ?></textarea> <textarea name="desc" rows="8" class="boxinput" placeholder="Beskrivelse" required><?= implode("\n", $event->getDescription()); ?></textarea>
</div> </div>

View File

@@ -93,7 +93,7 @@ foreach($members as $i => $data){
<?= '<input type="text" name="title" value="' . $project->getName() . '" class="boxinput">' ?><br> <?= '<input type="text" name="title" value="' . $project->getName() . '" class="boxinput">' ?><br>
<p class="subtitle">Beskrivelse (<i>markdown</i>)</p> <p class="subtitle">Beskrivelse (<i>markdown</i>)</p>
<textarea name="desc" cols="40" rows="5" class="boxinput"><?= implode($project->getDescription(), "\n"); ?></textarea> <textarea name="desc" cols="40" rows="5" class="boxinput"><?= implode("\n", $project->getDescription()); ?></textarea>
</div> </div>
<div class="gridr noborder"> <div class="gridr noborder">

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17.01 14.258" enable-background="new 0 0 17.01 14.258"><style type="text/css">.st0{fill:#004166;}</style><path class="st0" d="M14.009 8.551l.01-.019.005-.023.003-.014-.001-.006-.004-.022-.007-.021-.002-.006-4.629-8.382-.006-.006-.009-.013-.01-.01-.012-.009-.006-.005-.006-.002-.013-.005-.015-.004-.016-.002-.006-.002h-1.642l-.015.003-.021.004-.02.01-.017.012-.015.017-.009.011-4.233 7.425-.002.006-.007.021-.005.022-.001.006v2.86l.003.014.005.023.009.019.012.018.017.015.011.009.008.003.009.004.039.008h1.421l.038-.008.009-.004.031-.021.001-.001.019-.025 1.017-1.844h5.067l1.007 1.844.019.025.002.001.03.02.009.004.038.008h1.125l.04-.008.011-.005.023-.015.01-.009.015-.023.006-.011.002-.004.649-1.869.009-.014zm-.843 1.734h-.859l.582-1.678h.859l-.582 1.678zm-1.996-1.855l-.015-.018-.017-.012-.019-.01-.023-.005-.014-.003h-5.2l-.015.003-.023.005-.019.01-.018.012-.015.018-.01.011-1.017 1.844h-1.161l5.679-9.944 4.44 8.041h-.846l-3.426-6.236-.006-.007-.014-.017-.018-.015-.006-.006-.012-.003-.022-.007-.021-.002-.021.002-.021.007-.012.003-.007.006-.017.014-.014.018-.006.006-2.776 5.035-.002.005-.006.021-.005.023-.001.005.003.014.005.024.009.018.012.018.017.015.012.01.007.003.008.003.039.007h3.788l.039-.008.009-.004.007-.003.011-.009.018-.015.012-.017.01-.019.005-.023.003-.015-.001-.006-.004-.022-.007-.022-.002-.005-1.842-3.315-.037-.038.768-1.392 3.335 6.073-.572 1.649-.936-1.714-.01-.011zm-7.647-.863l4.186-7.342h1.383l-5.569 9.75v-2.408zm3.619-1.127h2.653l.378.682h-3.407l.376-.682zm.124-.225l1.198-2.173 1.206 2.173h-2.404zM1.197 14.258l-.13-.325h-.729l-.13.325h-.208l.588-1.464h.226l.591 1.464h-.208zm-.494-1.276l-.312.788h.621l-.309-.788zM2.123 14.258v-1.464h.959v.162h-.776v.472h.762v.162h-.762v.667h-.183zM4.22 14.258v-1.302h-.463v-.162h1.111v.162h-.465v1.302h-.183zM5.637 14.258v-1.464h.959v.162h-.777v.472h.762v.162h-.762v.505h.777v.162h-.959zM8.261 14.258l-.373-.582h-.292v.582h-.183v-1.464h.588c.268 0 .459.171.459.441 0 .263-.18.408-.38.426l.395.597h-.214zm.011-1.023c0-.165-.119-.279-.292-.279h-.384v.56h.384c.173 0 .292-.117.292-.281zM9.275 14.258v-1.464h.182v1.302h.681v.162h-.863zM10.613 13.527c0-.433.292-.757.727-.757.432 0 .727.325.727.757 0 .433-.294.758-.727.758-.435-.001-.727-.326-.727-.758zm1.264 0c0-.342-.211-.595-.538-.595-.329 0-.538.252-.538.595 0 .34.209.595.538.595.328 0 .538-.255.538-.595zM12.644 13.527c0-.454.336-.757.753-.757.259 0 .439.114.569.275l-.145.09c-.092-.119-.248-.202-.424-.202-.321 0-.564.246-.564.595 0 .347.244.597.564.597.176 0 .321-.086.393-.158v-.299h-.503v-.162h.685v.529c-.136.151-.336.252-.575.252-.417-.001-.753-.306-.753-.76zM14.84 14.258v-1.464h.182v1.464h-.182zM15.699 13.527c0-.45.332-.757.753-.757.259 0 .439.125.555.29l-.154.086c-.083-.123-.235-.213-.402-.213-.321 0-.564.246-.564.595 0 .347.244.595.564.595.167 0 .318-.088.402-.213l.156.086c-.123.167-.299.29-.558.29-.421-.002-.752-.309-.752-.759z"/></svg>

Before

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -65,39 +65,23 @@ img.float-right {
list-style: none; list-style: none;
} }
.calendar-events ul li :not(.date):not(.time) {
display: inline-block;
width: calc(100% - 7em);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.calendar-events ul .date {
color: rgba(0, 0, 0, 0.5);
font-size: 0.8em;
margin-top: 0.2em;
}
.calendar-events > li > p {
border-bottom: 0.1em dotted rgba(0, 0, 0, 0.2);
}
.calendar-events ul { .calendar-events ul {
list-style: none; list-style: none;
padding: 0; padding: 0;
} }
.calendar-events a, .calendar-events a {
color: rgba(0,0,0, 0.85);
.calendar-events ul .time {
color: rgba(0, 0, 0, 0.5);
float: right;
} }
.calendar-events ul .icon, .calendar-events ul .datetime {
.calendar-events ul .date { color: rgba(0, 0, 0, 0.5);
float: right; float: right;
margin-right: 0.5em; margin-left: 0.2em;
}
.calendar-events ul li {
margin-bottom: 0.4em;
} }
main.contentsplit { main.contentsplit {

View File

@@ -1,73 +0,0 @@
ul#webmail {
margin-top: 0;
margin-left: auto;
margin-right: auto;
table-layout: fixed;
display: table;
width: 100%;
padding: 0;
}
ul#webmail li {
display: table-cell;
text-align: center;
}
ul#webmail li .mailname {
font-size: 1.2em;
}
@media all and (min-width: 980px) {
ul#webmail {
max-width: 1280px;
}
ul#webmail li {
display: table-cell;
text-align: center;
}
}
@media all and (max-width: 980px) {
ul#webmail {
max-width: 650px;
}
ul#webmail li {
display: table-row;
text-align: center;
}
}
ul#webmail li div {
position: relative;
background: white;
margin: 1em 1em;
box-shadow: rgba(0,0,0,.3) 0 .1em .17em;
border-radius: .5rem;
cursor: pointer;
}
ul#webmail li:hover div {
box-shadow: rgba(0,0,0,.5) 0 .15em .2em;
}
ul#webmail li div a {
padding-top: 10em;
display: block;
text-decoration: none;
color: black;
}
ul#webmail li#afterlogic div {
background: white url('afterlogic.png') no-repeat;
background: white url('afterlogic.svg') no-repeat;
background-size: auto 8em;
background-position: 50% 60%;
}
ul#webmail li#squirrelmail div {
background: white url('squirrelmail.png') no-repeat;
background-size: auto 10em;
background-position: 50% 0;
}
ul#webmail li#roundcube div {
background: white url('roundcube.png') no-repeat;
background-size: auto 10em;
background-position: 50% 0;
}
ul#webmail li#rainloop div {
background: white url('rainloop.png') no-repeat;
background-size: auto 10em;
background-position: 50% 0;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

66
www/css/webmail.css Normal file
View File

@@ -0,0 +1,66 @@
ul#webmail {
margin-top: 0;
margin-left: auto;
margin-right: auto;
table-layout: fixed;
display: table;
width: 100%;
padding: 0;
}
ul#webmail li {
display: table-cell;
text-align: center;
}
ul#webmail li .mailname {
font-size: 1.2em;
}
@media all and (min-width: 980px) {
ul#webmail {
max-width: 1280px;
}
ul#webmail li {
display: table-cell;
text-align: center;
}
}
@media all and (max-width: 980px) {
ul#webmail {
max-width: 650px;
}
ul#webmail li {
display: table-row;
text-align: center;
}
}
ul#webmail li div {
position: relative;
background: white;
margin: 1em 1em;
box-shadow: rgba(0,0,0,.3) 0 .1em .17em;
border-radius: .5rem;
cursor: pointer;
}
ul#webmail li:hover div {
box-shadow: rgba(0,0,0,.5) 0 .15em .2em;
}
ul#webmail li div a {
padding-top: 10em;
display: block;
text-decoration: none;
color: black;
}
ul#webmail li#roundcube div {
background: white url('/webmail/roundcube.png') no-repeat;
background-size: auto 10em;
background-position: 50% 0;
}
ul#webmail li#snappymail div {
background: white url('/webmail/snappymail.png') no-repeat;
background-size: auto 10em;
background-position: 50% 0;
}
div#lokalmail {
font-size: 1.1em;
}

View File

@@ -52,6 +52,17 @@ function getDirContents($dir, &$results = array()) {
} }
$images = getDirContents($galleryDir); $images = getDirContents($galleryDir);
function cmpModifyTime($a, $b) {
global $galleryDir;
$mtime_a = filemtime($galleryDir . $a);
$mtime_b = filemtime($galleryDir . $b);
return ($mtime_a > $mtime_b) ? -1 : 1;
}
usort($images, "cmpModifyTime");
$imageTemplate = ' $imageTemplate = '
<div class="card"> <div class="card">
<div class="card-image-div"> <div class="card-image-div">
@@ -105,7 +116,6 @@ $imageTemplate = '
$vars = [ $vars = [
"%user" => htmlspecialchars($imguser), "%user" => htmlspecialchars($imguser),
"%time" => $modTime, "%time" => $modTime,
"%timestamp" => filemtime($galleryDir . $value),
"%name" => htmlspecialchars($displaypath), "%name" => htmlspecialchars($displaypath),
"%path" => $serverPath . $value, "%path" => $serverPath . $value,
"%thumbnail" => $serverPath . "/.thumbnails" . $value . ".png", "%thumbnail" => $serverPath . "/.thumbnails" . $value . ".png",

View File

@@ -77,18 +77,20 @@ $doorTime = date("H:i", $doorEntry->time);
<?php } else { ?> <?php } else { ?>
<strong><?= $event->getName(); ?></strong> <strong><?= $event->getName(); ?></strong>
<?php } ?> <?php } ?>
<?php /* <a class="icon subscribe">+</a> */ ?>
<?php if ($period !== \pvv\side\Agenda::TODAY) { <span class="datetime">
echo '<span class="time">' . $event->getStart()->format('H:i') . '</span>'; <?php if ($period !== \pvv\side\Agenda::TODAY) {
if (\pvv\side\Agenda::isThisWeek($event->getStart()) || $event->getStart()->sub(new DateInterval('P3D'))->getTimestamp() < time()) { echo $event->getStart()->format('H:i') . " " ;
echo '<span class="date">' . strftime('%a', $event->getStart()->getTimestamp()) . '</span>'; if (\pvv\side\Agenda::isThisWeek($event->getStart()) || $event->getStart()->sub(new DateInterval('P3D'))->getTimestamp() < time()) {
} else { echo $event->getStart()->format('D');
echo '<span class="date">' . strftime('%e. %b', $event->getStart()->getTimestamp()) . '</span>'; } else {
} echo $event->getStart()->format('j. F');
} else { }
echo '<span class="time">' . $event->getStart()->format('H:i') . '</span>'; } else {
} echo $event->getStart()->format('H:i');
?> }
?>
</span>
</li> </li>
<?php } ?> <?php } ?>
</ul> </ul>
@@ -108,7 +110,7 @@ $doorTime = date("H:i", $doorEntry->time);
echo $title; echo $title;
} }
echo "</h1>"; echo "</h1>";
$Parsedown = new Parsedown(); $Parsedown = new Parsedown();
echo $Parsedown->text(implode("\n", $motd["content"])); echo $Parsedown->text(implode("\n", $motd["content"]));
?> ?>

View File

@@ -21,7 +21,7 @@ function stepSlideshow(imgs) {
//Change source to next picture after it is faded out //Change source to next picture after it is faded out
slideshowIndex = (slideshowIndex + 1) % imgs.length; slideshowIndex = (slideshowIndex + 1) % imgs.length;
ssi2.src = slideshowFnames[slideshowIndex]; ssi2.src = slideshowFnames[slideshowIndex];
}, 800); }, 1000);
} }
//Initialize slideshow, start interval //Initialize slideshow, start interval
@@ -29,4 +29,4 @@ if (slideshowFnames.length > 1) {
slideshowInterval = setInterval(()=>{ slideshowInterval = setInterval(()=>{
stepSlideshow(slideshowFnames); stepSlideshow(slideshowFnames);
}, SLIDESHOWDELAYMS); }, SLIDESHOWDELAYMS);
} }

View File

@@ -43,11 +43,11 @@ require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc'
<p>Vi har en <a href="http://list.pvv.org/mailman/listinfo/aktive">e-postliste for aktive medlemmer</a>. All offisiell informasjon blir sendt på denne listen, og alle arrengementer blir også annonsert her.</p> <p>Vi har en <a href="http://list.pvv.org/mailman/listinfo/aktive">e-postliste for aktive medlemmer</a>. All offisiell informasjon blir sendt på denne listen, og alle arrengementer blir også annonsert her.</p>
<p>Vi har en <a target="_blank" href="https://matrix.to/#/#pvv:pvv.ntnu.no">Matrix-server</a> for chat, memes, og all annen kommunikasjon. Den er bridget med IRC-kanalen og Discord-guilden vår. Hvis du er medlem kan du bruke vår <a href="https://chat.pvv.ntnu.no">self-hosted web client</a>.</p> <p>Vi har et <a target="_blank" href="https://matrix.to/#/#pvv:pvv.ntnu.no">Matrix Space™</a> for chat, memes, og all annen kommunikasjon. Den er bridget med IRC-kanalen og Discord-serveren vår. Hvis du er medlem kan du bruke vår egen instans av <a href="https://chat.pvv.ntnu.no">Element web</a>.</p>
<p>Vi har en IRC-kanal på <a href="http://webchat.ircnet.net/">IRCnet</a> kalt #pvv.</p> <p>Vi har en IRC-kanal på <a href="http://webchat.ircnet.net/">IRCnet</a> kalt #pvv.</p>
<p>Vi har en <a target="_blank" href="https://discord.gg/8VTBr6Q">Discord-guild</a> for de som foretrekker Discord over Matrix. </p> <p>Vi har en <a target="_blank" href="https://discord.gg/8VTBr6Q">Discord-server</a> for de som foretrekker Discord over Matrix. </p>
</main> </main>
</body> </body>

View File

@@ -66,7 +66,7 @@ p {hyphens: auto;}
<p>PVV har også en del brettspill du kan prøve. <p>PVV har også en del brettspill du kan prøve.
<p><a href="../pvv/Dokumentasjon">Her</a> er en oversikt over hva du kan gjøre når du har fått PVV bruker. <p><a href="https://wiki.pvv.ntnu.no/wiki/Dokumentasjon">Her</a> er en oversikt over hva du kan gjøre når du har fått PVV bruker.
</article> </article>

View File

@@ -31,7 +31,7 @@ $attrs = $as->getAttributes();
<p> <p>
Første steg for å bli medlem i PVV er å betale Første steg for å bli medlem i PVV er å betale
<a href="../pvv/Medlemskontingent">medlemskontingent</a> på 50kr per år. <a href="https://wiki.pvv.ntnu.no/wiki/Medlemskontingent">medlemskontingent</a> på 50kr per år.
Disse pengene brukes for å drifte PVV. Se lenken for kontonummeret. Disse pengene brukes for å drifte PVV. Se lenken for kontonummeret.
</p> </p>
<p> <p>
@@ -42,7 +42,7 @@ $attrs = $as->getAttributes();
å man møte opp på lokalene slik at man får satt passord. å man møte opp på lokalene slik at man får satt passord.
</p> </p>
<p> <p>
Mer informasjon om medlemskap finner du <a href="../pvv/Medlem">her</a>. Mer informasjon om medlemskap finner du <a href="https://wiki.pvv.ntnu.no/wiki/Medlem">her</a>.
</p> </p>
<h2>Registrer deg som bruker</h2> <h2>Registrer deg som bruker</h2>
@@ -51,7 +51,7 @@ $attrs = $as->getAttributes();
PVV har for øyeblikket et manuelt system for å legge til nye brukere. PVV har for øyeblikket et manuelt system for å legge til nye brukere.
Se lenkene over for mer informasjon. Se lenkene over for mer informasjon.
Vi foretrekker at du kommer inn på besøk på <a href="https://link.mazemap.com/aKDz8eu8">våre lokaler i Oppredning/Gruvedrift, rom 247</a> Vi foretrekker at du kommer inn på besøk på <a href="https://link.mazemap.com/aKDz8eu8">våre lokaler i Oppredning/Gruvedrift, rom 247</a>
for å sette sette opp din PVV bruker. Hvis du ikke har mulighet til det, kan du <a href="../pvv/Kontaktinformasjon">finne oss her</a> og sende en epost. for å sette sette opp din PVV bruker. Hvis du ikke har mulighet til det, kan du <a href="https://wiki.pvv.ntnu.no/wiki/Kontaktinformasjon">finne oss her</a> og sende en epost.
For å aktivere din brukerkonto på PVV, må du alikevell møte opp på For å aktivere din brukerkonto på PVV, må du alikevell møte opp på
lokalene våre slik at vi kan få satt ditt passord. lokalene våre slik at vi kan få satt ditt passord.
</p> </p>

View File

@@ -79,7 +79,7 @@ if($new == 0){
<p class="subtitle no-chin">Beskrivelse (<i style="opacity:0.5;">markdown</i>)</p> <p class="subtitle no-chin">Beskrivelse (<i style="opacity:0.5;">markdown</i>)</p>
<p class="subnote no-chin">Hva går prosjektet ditt ut på?</p> <p class="subnote no-chin">Hva går prosjektet ditt ut på?</p>
<p class="subnote">De første to linjene blir vist på prosjektkortet, prøv å gjøre de til et fint sammendrag eller intro!</p> <p class="subnote">De første to linjene blir vist på prosjektkortet, prøv å gjøre de til et fint sammendrag eller intro!</p>
<textarea class="tall" name="desc" style="width:100%" rows="8" class="boxinput"><?= implode($project->getDescription(), "\n"); ?></textarea> <textarea class="tall" name="desc" style="width:100%" rows="8" class="boxinput"><?= implode("\n", $project->getDescription()); ?></textarea>
<?= '<input type="hidden" name="id" value="' . $project->getID() . '" />' ?> <?= '<input type="hidden" name="id" value="' . $project->getID() . '" />' ?>
<input type="hidden" name="active" value="1"/> <input type="hidden" name="active" value="1"/>

71
www/spaceapi.php Normal file
View File

@@ -0,0 +1,71 @@
<?php
require_once dirname(__DIR__) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
$pdo = new \PDO($DB_DSN, $DB_USER, $DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$door = new \pvv\side\Door($pdo);
$doorEntry = (object)($door->getCurrent());
?>
{
"api_compatibility": ["14"],
"space": "Programvareverkstedet",
"logo": "https://git.pvv.ntnu.no/assets/img/logo.png",
"url": "https://www.pvv.ntnu.no/",
"location": {
"ext_campus": "NTNU Gløshaugen",
"ext_room_name": "Oppredning/Gruvedrift, Floor 2, Room 247",
"ext_mazemap": "https://link.mazemap.com/2n2HWa7H",
"address": "Sem Sælands vei 1, 7034 Trondheim, Norway",
"timezone": "Europe/Oslo",
"lon": 10.4063852,
"lat": 63.4170226
},
"contact": {
"irc": "irc://irc.pvv.ntnu.no/pvv",
"email": "pvv@pvv.ntnu.no",
"ext_discord": "https://discord.gg/8VTBr6Q",
"gopher": "gopher://isvegg.pvv.ntnu.no",
"matrix": "#pvv:pvv.ntnu.no"
},
"issue_report_channels": ["email"],
"state": {
"open": <?php echo($doorEntry->open ? "true" : "false"); ?>,
"lastchange": <?php echo($doorEntry->time ? $doorEntry->time : 0); ?>,
"message": "<?php echo($doorEntry->open ? "open for public, members are present" : "closed"); ?>"
},
"feeds": {
"wiki": {
"type": "atom",
"url": "https://wiki.pvv.ntnu.no/w/api.php?hidebots=1&urlversion=1&action=feedrecentchanges&feedformat=atom"
},
"calendar": {
"type": "html",
"url": "https://www.pvv.ntnu.no/hendelser/"
}
},
"projects": [
"https://github.com/Programvareverkstedet/",
"https://git.pvv.ntnu.no/",
"https://www.pvv.ntnu.no/prosjekt/"
],
"links": [
{
"name": "YouTube",
"url": "https://www.youtube.com/@pvvntnu5640"
},
{
"name": "LinkedIn",
"url": "https://www.linkedin.com/company/pvvntnu/"
},
{
"name": "Facebook",
"url": "https://www.facebook.com/pvvntnu/"
}
]
}

BIN
www/tjenester/img/gitea.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -28,31 +28,22 @@ require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc'
<div class="categoryContent"> <div class="categoryContent">
<div class="service"> <div class="service">
<div class="serviceContent">
<h2 class="serviceTitle">Gitea</h2>
<p class="serviceDescription">Vår interne git-tjener, åpen for alle medlemmer</p>
<div class="serviceLink"><a href="https://git.pvv.ntnu.no" target="_blank">Gå til git.pvv.ntnu.no</a></div>
</div>
<img class="serviceImage" src="img/gitea.png" alt="Gitea-logo">
</div>
<div class="service">
<div class="serviceContent"> <div class="serviceContent">
<h2 class="serviceTitle">GitHub</h2> <h2 class="serviceTitle">GitHub</h2>
<p class="serviceDescription">Våre offentlige kodebrønner, åpent for verden!</p> <p class="serviceDescription">Våre offentlige kodebrønner, åpent for verden!</p>
<div class="serviceLink"><a href="https://github.com/Programvareverkstedet/" target="_blank">Gå til GitHub</a></div> <div class="serviceLink"><a href="https://github.com/Programvareverkstedet/" target="_blank">Gå til GitHub</a></div>
</div> </div>
<img class="serviceImage" src="img/github.png" alt="GitHub-logo"> <img class="serviceImage" src="img/github.png" alt="GitHub-logo">
</div> </div>
<div class="service">
<div class="serviceContent">
<h2 class="serviceTitle">Gogs</h2>
<p class="serviceDescription">Vår interne git-tjener, åpen for alle medlemmer</p>
<div class="serviceLink"><a href="https://git.pvv.ntnu.no" target="_blank">Gå til git.pvv.ntnu.no</a></div>
</div>
<img class="serviceImage" src="img/gogs.png" alt="Gogs-logo">
</div>
<div class="service">
<div class="serviceContent">
<h2 class="serviceTitle">Dev og Trac</h2>
<p class="serviceDescription">Trac er vårt gamle prosjektsystem. Her kan du lage og dele prosjekter om du er for hipster for github.</p>
<div class="serviceLink"><a href="https://dev.pvv.ntnu.no/projects/pvv-dev/" target="_blank">Gå til dev.pvv.ntnu.no</a></div>
</div>
<img class="serviceImage" src="img/trac.png" alt="Trac-logo">
</div>
</div> </div>
</div> </div>
@@ -92,7 +83,7 @@ require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc'
<a href="https://www.pvv.ntnu.no/mail/" target="_blank">Gå til Webmail</a> <a href="https://www.pvv.ntnu.no/mail/" target="_blank">Gå til Webmail</a>
</div> </div>
<div class="serviceLink"> <div class="serviceLink">
<a href="https://www.pvv.ntnu.no/pvv/Drift/Mail/IMAP_POP3/" target="_blank">IMAP/POP/SMTP-innstillinger</a> <a href="https://wiki.pvv.ntnu.no/wiki/Drift/Mail/IMAP_POP3" target="_blank">IMAP/POP/SMTP-innstillinger</a>
</div> </div>
</div> </div>
<img class="serviceImage" src="img/email.png" alt="Epost-ikon"> <img class="serviceImage" src="img/email.png" alt="Epost-ikon">
@@ -119,7 +110,7 @@ require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc'
<div class="serviceContent"> <div class="serviceContent">
<h2 class="serviceTitle">Brukernettsider</h2> <h2 class="serviceTitle">Brukernettsider</h2>
<p class="serviceDescription">Alle brukere får automatisk en egen side for html og php. Denne er offentlig på pvv.ntnu.no/~brukernavn.</p> <p class="serviceDescription">Alle brukere får automatisk en egen side for html og php. Denne er offentlig på pvv.ntnu.no/~brukernavn.</p>
<div class="serviceLink"><a href="https://www.pvv.ntnu.no/pvv/Hjemmesider" target="_blank">Gå til dokumentasjon på wiki</a></div> <div class="serviceLink"><a href="https://wiki.pvv.ntnu.no/wiki/Tjenester/Hjemmesider" target="_blank">Gå til dokumentasjon på wiki</a></div>
</div> </div>
<img class="serviceImage" src="img/php.png" alt="En elephpant"> <img class="serviceImage" src="img/php.png" alt="En elephpant">
</div> </div>
@@ -128,7 +119,7 @@ require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc'
<div class="serviceContent"> <div class="serviceContent">
<h2 class="serviceTitle">PVV-siden</h2> <h2 class="serviceTitle">PVV-siden</h2>
<p class="serviceDescription">Du befinner deg nå på PVV sin offisielle hjemmeside. Den er skrevet i PHP og kjører på en egen server.</p> <p class="serviceDescription">Du befinner deg nå på PVV sin offisielle hjemmeside. Den er skrevet i PHP og kjører på en egen server.</p>
<div class="serviceLink"><a href="https://github.com/Programvareverkstedet/nettsiden" target="_blank">Se koden på github</a></div> <div class="serviceLink"><a href="https://git.pvv.ntnu.no/Projects/nettsiden" target="_blank">Se koden på gitea</a></div>
</div> </div>
<img class="serviceImage" src="../pvv-logo.png" alt="PVV-logo"> <img class="serviceImage" src="../pvv-logo.png" alt="PVV-logo">
</div> </div>
@@ -192,7 +183,7 @@ require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc'
<a href="https://www.pvv.ntnu.no/galleri/" target="_blank">Se galleriet</a> <a href="https://www.pvv.ntnu.no/galleri/" target="_blank">Se galleriet</a>
</div> </div>
<div class="serviceLink"> <div class="serviceLink">
<a href="https://www.pvv.ntnu.no/pvv/Bildedeling" target="_blank">Opplasting</a> <a href="https://wiki.pvv.ntnu.no/wiki/Bildedeling" target="_blank">Opplasting</a>
</div> </div>
</div> </div>
<img class="serviceImage" src="img/gallery.png" alt="RSS-Ikon"> <img class="serviceImage" src="img/gallery.png" alt="RSS-Ikon">

42
www/webmail/index.php Normal file
View File

@@ -0,0 +1,42 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
?>
<!DOCTYPE html>
<html lang="no">
<head>
<style>
p {hyphens: auto;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<link rel="shortcut icon" href="favicon.ico">
<link rel="stylesheet" href="../css/normalize.css">
<link rel="stylesheet" href="../css/style.css">
<link rel="stylesheet" href="../css/webmail.css">
<meta name="theme-color" content="#024" />
<title>Mailverkstedet</title>
</head>
<body>
<header>Mail&shy;verk&shy;stedet</header>
<main>
<h2>Bruk en av våre webmail-klienter</h2>
<ul id="webmail">
<li id="roundcube"><div><a href="https://webmail.pvv.ntnu.no/roundcube/"><span class="mailname">Roundcube</span></a>
<li id="snappymail"><div><a href="https://snappymail.pvv.ntnu.no/"><span class="mailname">SnappyMail</span></a>
</ul>
<h2>Eller bruk en lokal e-postklient</h2>
<div id="lokalmail">
Informasjon om oppsett og bruk av e-post finner du på <a href="https://wiki.pvv.ntnu.no/wiki/Drift/Mail">wiki-en vår</a>.
<br>
Du kan for eksempel bruke en grafisk klient som <a href="https://www.thunderbird.net/">Thunderbird</a>, eller en terminaldrevet klient som <a href="https://neomutt.org/">(neo)</a><a href="http://www.mutt.org/">mutt</a>, <a href="https://aerc-mail.org/">aerc</a> eller <a href="https://alpineapp.email/">alpine</a>.
</div>
</main>
<nav>
<?= navbar(1, "mail"); ?>
<?= loginbar($sp, $pdo); ?>
</nav>
</body>
</html>

View File

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

BIN
www/webmail/snappymail.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB