Compare commits

..

1 Commits

19 changed files with 80 additions and 128 deletions

View File

@ -33,5 +33,9 @@
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

@ -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,10 +20,6 @@ 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,8 +6,6 @@ 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;
@ -20,7 +18,7 @@ class Agenda {
} }
public static function getFormattedDate($date) { public static function getFormattedDate($date) {
return $date->format("l j. M H.i"); return trim(strftime('%A %e. %b %H.%M', $date->getTimeStamp()));
} }
public function getEventsBetween(DateTimeImmutable $from, DateTimeImmutable $to) { public function getEventsBetween(DateTimeImmutable $from, DateTimeImmutable $to) {

View File

@ -5,7 +5,6 @@ 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 $this->getStart()->format("l"); return strftime('%A', $this->getStart()->getTimestamp());
} }
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 $this->getStart()->format("j. F"); return trim(strftime('%e. %B', $this->getStart()->getTimestamp()));
} }
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,6 +13,7 @@ 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(){
@ -51,6 +52,10 @@ 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,6 +38,7 @@ 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="Beskrivelse" required><?= implode("\n", $event->getDescription()); ?></textarea> <textarea name="desc" rows="8" class="boxinput" placeholder="Beskrivese" required><?= implode($event->getDescription(), "\n"); ?></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("\n", $project->getDescription()); ?></textarea> <textarea name="desc" cols="40" rows="5" class="boxinput"><?= implode($project->getDescription(), "\n"); ?></textarea>
</div> </div>
<div class="gridr noborder"> <div class="gridr noborder">

View File

@ -65,23 +65,39 @@ 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 .datetime { .calendar-events ul .time {
color: rgba(0, 0, 0, 0.5); color: rgba(0, 0, 0, 0.5);
float: right; float: right;
margin-left: 0.2em;
} }
.calendar-events ul li { .calendar-events ul .icon,
margin-bottom: 0.4em; .calendar-events ul .date {
float: right;
margin-right: 0.5em;
} }
main.contentsplit { main.contentsplit {

View File

@ -53,11 +53,8 @@ function getDirContents($dir, &$results = array()) {
$images = getDirContents($galleryDir); $images = getDirContents($galleryDir);
function cmpModifyTime($a, $b) { function cmpModifyTime($a, $b) {
global $galleryDir; $mtime_a = filemtime($galleryDir . $a);
$mtime_b = filemtime($galleryDir . $b);
$mtime_a = filemtime($galleryDir . $a);
$mtime_b = filemtime($galleryDir . $b);
return ($mtime_a > $mtime_b) ? -1 : 1; return ($mtime_a > $mtime_b) ? -1 : 1;
} }

View File

@ -77,20 +77,18 @@ $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> */ ?>
<span class="datetime"> <?php if ($period !== \pvv\side\Agenda::TODAY) {
<?php if ($period !== \pvv\side\Agenda::TODAY) { echo '<span class="time">' . $event->getStart()->format('H:i') . '</span>';
echo $event->getStart()->format('H:i') . " " ; if (\pvv\side\Agenda::isThisWeek($event->getStart()) || $event->getStart()->sub(new DateInterval('P3D'))->getTimestamp() < time()) {
if (\pvv\side\Agenda::isThisWeek($event->getStart()) || $event->getStart()->sub(new DateInterval('P3D'))->getTimestamp() < time()) { echo '<span class="date">' . strftime('%a', $event->getStart()->getTimestamp()) . '</span>';
echo $event->getStart()->format('D'); } else {
} else { echo '<span class="date">' . strftime('%e. %b', $event->getStart()->getTimestamp()) . '</span>';
echo $event->getStart()->format('j. F'); }
} } else {
} else { echo '<span class="time">' . $event->getStart()->format('H:i') . '</span>';
echo $event->getStart()->format('H:i'); }
} ?>
?>
</span>
</li> </li>
<?php } ?> <?php } ?>
</ul> </ul>
@ -110,7 +108,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

@ -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 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 denne listen, og alle arrengementer blir også annonsert her.</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 <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 en IRC-kanal <a href="http://webchat.ircnet.net/">IRCnet</a> kalt #pvv.</p> <p>Vi har en IRC-kanal <a href="http://webchat.ircnet.net/">IRCnet</a> kalt #pvv.</p>
<p>Vi har en <a target="_blank" href="https://discord.gg/8VTBr6Q">Discord-server</a> for de som foretrekker Discord over Matrix. </p> <p>Vi har en <a target="_blank" href="https://discord.gg/8VTBr6Q">Discord-guild</a> for de som foretrekker Discord over Matrix. </p>
</main> </main>
</body> </body>

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 class="subnote no-chin">Hva går prosjektet ditt ut ?</p>
<p class="subnote">De første to linjene blir vist prosjektkortet, prøv å gjøre de til et fint sammendrag eller intro!</p> <p class="subnote">De første to linjene blir vist 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("\n", $project->getDescription()); ?></textarea> <textarea class="tall" name="desc" style="width:100%" rows="8" class="boxinput"><?= implode($project->getDescription(), "\n"); ?></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"/>

View File

@ -1,71 +0,0 @@
<?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/"
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -28,22 +28,31 @@ 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"> 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"> til GitHub</a></div> <div class="serviceLink"><a href="https://github.com/Programvareverkstedet/" target="_blank"> 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"> 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"> til dev.pvv.ntnu.no</a></div>
</div>
<img class="serviceImage" src="img/trac.png" alt="Trac-logo">
</div>
</div> </div>
</div> </div>
@ -110,7 +119,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 pvv.ntnu.no/~brukernavn.</p> <p class="serviceDescription">Alle brukere får automatisk en egen side for html og php. Denne er offentlig pvv.ntnu.no/~brukernavn.</p>
<div class="serviceLink"><a href="https://wiki.pvv.ntnu.no/wiki/Tjenester/Hjemmesider" target="_blank"> til dokumentasjon wiki</a></div> <div class="serviceLink"><a href="https://wiki.pvv.ntnu.no/wiki/Hjemmesider" target="_blank"> til dokumentasjon 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>
@ -119,7 +128,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 PVV sin offisielle hjemmeside. Den er skrevet i PHP og kjører en egen server.</p> <p class="serviceDescription">Du befinner deg PVV sin offisielle hjemmeside. Den er skrevet i PHP og kjører en egen server.</p>
<div class="serviceLink"><a href="https://git.pvv.ntnu.no/Projects/nettsiden" target="_blank">Se koden gitea</a></div> <div class="serviceLink"><a href="https://github.com/Programvareverkstedet/nettsiden" target="_blank">Se koden github</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>