Implement one-month view for calendar
authorJoey Schulze <joey@infodrom.org>
Sat, 8 Jun 2019 15:03:20 +0000 (17:03 +0200)
committerJoey Schulze <joey@infodrom.org>
Sat, 8 Jun 2019 15:03:20 +0000 (17:03 +0200)
class/calendar.class.php
src/Infodrom/calendar/index.wml

index 8fc45ca..9be60db 100644 (file)
@@ -217,6 +217,37 @@ class Calendar extends DatabaseTable {
                 'html' => array('termine' => $out));
   }
 
+  public function ajaxOneMonth(Array $data)
+  {
+    list($year, $month) = explode('-', $data['month']);
+    if (!empty($data['direction'])) {
+      switch ($data['direction']) {
+      case 'prev':
+       if ($month > 1) $month--;
+       else {$year--; $month = 12;}
+       break;
+      case 'next':
+       if ($month < 12) $month++;
+       else {$year++; $month = 1;}
+       break;
+      }
+    }
+
+    $monthStr = sprintf('%04d-%02d', $year, $month);
+    $right = $this->formatOneMonth($year, $month);
+
+    $out = '<div class="onemonth">';
+
+    $out .= '<div class="monthcolumn">';
+    $out .= $right;
+    $out .= '</div>';
+
+    $out .= '</div>';
+
+    return array('values' => array('thismonth' => $monthStr),
+                'html' => array('termine' => $out));
+  }
+
   public function ajaxMonth(Array $data)
   {
     $monthname = array('','Januar','Februar','März', 'April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
index 3448505..cdf571b 100644 (file)
@@ -41,32 +41,36 @@ div.bimonth div.monthcolumn {
     float: left;
     width: 50%;
 }
-div.bimonth div.head {
+div.onemonth div.monthcolumn {
+    float: left;
+    width: 100%;
+}
+div.head {
     font-weight: bold;
     border-bottom: 1px solid #ccc;
     text-align: center;
 }
-div.bimonth div.day {
+div.day {
     position: relative;
     border-bottom: 1px solid #ccc;
 }
-div.bimonth div.sunday {
+div.sunday {
     border-bottom: 1px solid black;
 }
-div.bimonth div.today {
+div.today {
     background: #90ee90;
 }
-div.bimonth div div.wday {
+div div.wday {
     width: 1.6em;
     margin-right: 2px;
     float: left;
 }
-div.bimonth div div.date {
+div div.date {
     width: 1.6em;
     margin-right: 2px;
     float: left;
 }
-div.bimonth div.kw {
+div.kw {
     position: absolute;
     top: 0px;
     right: 1px;
@@ -272,6 +276,7 @@ function dom_enhance()
                '<select id="view">',
                '<option value="normal">Normal</option>',
                '<option value="bimonth">2 Monate</option>',
+               '<option value="onemonth">1 Monat</option>',
                '<option value="month">Monat</option>',
                '</select>',
                '</div>'];
@@ -378,6 +383,9 @@ $(function(){
        } else if ($('#view').val() == 'bimonth') {
            $('#month,div.view button').show();
            $.invoke('Calendar/BiMonth', {month: $('#thismonth').val()}, month_actions);
+       } else if ($('#view').val() == 'onemonth') {
+           $('#month,div.view button').show();
+           $.invoke('Calendar/OneMonth', {month: $('#thismonth').val()}, month_actions);
        } else if ($('#view').val() == 'month') {
            $('#month,div.view button').show();
            $.invoke('Calendar/Month', {month: $('#thismonth').val()}, month_actions);
@@ -399,6 +407,10 @@ $(function(){
            $.invoke('Calendar/BiMonth',
                     {month: $('#thismonth').val(),
                      direction: direction}, month_actions);
+       } else if ($('#view').val() == 'onemonth') {
+           $.invoke('Calendar/OneMonth',
+                    {month: $('#thismonth').val(),
+                     direction: direction}, month_actions);
        } else if ($('#view').val() == 'month') {
            $.invoke('Calendar/Month',
                     {month: $('#thismonth').val(),