Droplet

Funktion

Das Bookings Droplet zeigt einen beliebigen Kalendermonat auf einer beliebigen (anderen) Seite an. Standardmäßig wird der aktuelle Monat angezeigt, Sie können den gewünschten Monat aber auch per Parameter angeben.

Download

Seit Droplets Version 1.1 ist es möglich, Droplets direkt als Zip-Datei zu installieren. Dies macht es wesentlich einfacher, Droplets zu installieren, und ist daher die empfohlene Methode. Die aktuellste Version des Bookings Droplets finden Sie auf AMASP.

Droplet Code

if ( empty( $section ) ) return;
global $page_id, $MOD_BOOKINGS;
// Connect with DropletsExtension Interface
if (file_exists(WB_PATH.'/modules/droplets_extension/interface.php')) {
  require_once(WB_PATH.'/modules/droplets_extension/interface.php');
  // auto load frontend.css using DropletsExtension Interface
  if (function_exists('is_registered_droplet_css') && !is_registered_droplet_css('Bookings', $page_id)) {
    register_droplet_css('Bookings', $page_id, 'bookings_v2', 'frontend.css');
  }
}
$_year   = empty($year)  ? date('Y') : $year;
$_month  = empty($month) ? date('m') : $month;
$page_id = empty($page)  ? PAGE_ID   : $page;
$return  = array();

if(!file_exists(WB_PATH .'/modules/bookings_v2/languages/' .LANGUAGE .'.php')) {
    require_once(WB_PATH .'/modules/bookings_v2/languages/EN.php');
} else {
    require_once(WB_PATH .'/modules/bookings_v2/languages/' .LANGUAGE .'.php');
}

include_once(WB_PATH.'/modules/bookings_v2/functions.php');
$return[] = '<div id="mod_bookings">';
$return[] = Bookings_Month_Sheet( $_year, $_month, $section, true );
$return[] = '</div>';
return implode('', $return);

Verwendung

[[Bookings?page=NUMBER&section=NUMBER&month=NUMBER&year=YEAR]]

Es muß eine gültige Seiten- und Sektionsnummer angegeben sein! Monat und Jahr sind optional, standardmäßig wird immer der aktuelle Monat angezeigt.

Damit das Kalenderblatt korrekt dargestellt wird, müssen Sie die CSS-Datei mit in die Seite einbinden, etwa indem Sie sie direkt im Template oder per @import() in dessen CSS einbinden.

Wenn Sie die DropletsExtension der PHPManufaktur installiert haben, wird die frontend.css automatisch geladen. Bitte auf die korrekte Einbindung achten! (Mindestens eine Seite muß eine Sektion vom Typ droplets_extension haben, und im Template muß die Funktion print_page_head() aufgerufen werden. Details siehe obigen Link.)

Einschränkungen

Alle Navigationslinks des Droplets führen auf die dazugehörige Bookings-Seite. Die Navigation innerhalb der Seite, auf der das Droplet eingebunden ist, ist nicht möglich.

Alternatives Droplet

Ein Verwender von Bookings hat mir folgende Anpassung zukommen lassen:

//:Include a Bookings section anywhere (Bookings module needed!)
//:[[Bookings?page=NUMBER&section=NUMBER&month=NUMBER&year=YEAR]]
// new:
//:[[Bookings?page=NUMBER&section=NUMBER&month=+Number&year=+Year]]
// optional, addiert zum aktuellen Monat (Jahr) entsprechend etwas dazu


if (empty($section))
  return;
global $page_id, $MOD_BOOKINGS;
// Connect with DropletsExtension Interface
if (file_exists(WB_PATH . '/modules/droplets_extension/interface.php')) {
  require_once(WB_PATH . '/modules/droplets_extension/interface.php');
  // auto load frontend.css using DropletsExtension Interface
  if (function_exists('is_registered_droplet_css') && !is_registered_droplet_css('Bookings', $page_id)) {
    register_droplet_css('Bookings', $page_id, 'bookings_v2', 'frontend.css');
  }
}

// **** new: 10.09.2015
if (preg_match("/\+[0-9]{1,2}/", $month, $m2add)) {
  $_month = (date("m") + $m2add[0]);
} else {
  $_month = empty($month) ? date('m') : $month;
}
if (preg_match("/\+[0-9]{1,2}/", $year, $y2add)) {
  $_year = (date("Y") + $y2add[0]);
} else {
  $_year = empty($year) ? date('Y') : $year;
}
if ($_month > 12) {
  // kleine Overflow-Korrektur
  $_month -= 12;
  $_year += 1;
}
// **** new-end
$page_id = empty($page) ? PAGE_ID : $page;

$return = array();
if (!file_exists(WB_PATH . '/modules/bookings_v2/languages/' . LANGUAGE . '.php')) {
  require_once(WB_PATH . '/modules/bookings_v2/languages/EN.php');
} else {
  require_once(WB_PATH . '/modules/bookings_v2/languages/' . LANGUAGE . '.php');
}

include_once(WB_PATH . '/modules/bookings_v2/functions.php');
$return[] = '
'
;
$return[] = Bookings_Month_Sheet($_year, $_month, $section, true);
$return[] = '
'
;
return implode('', $return);

Damit ist folgender Aufruf möglich:

[[Bookings?page=NUMBER&section=NUMBER&month=+NUMBER&year=+YEAR]]

Statt eines bestimmten oder des aktuellen Monats kann man nun also z.B. den nächsten oder übernächsten Monat anzeigen lassen.

Um sich den Aufruf des Droplets zu erleichtern, für das man ja Seiten- und Sektions-ID benötigt, in der Datei functions.php ab Zeile 963 folgendes einfügen:

// Anzeige der Section und PageID, dann hat man es mit dem Droplet einfacher: 10.09.2015, FoB
echo "
Droplet use: Section="
.$section." / Page=".$page_id."
"
;