Hallo an alle,
ich versuche mich gerade an der Portierung von Arvid´s 1.12 Plugin Mobile Layout 1.0 für Mozillo 2.0.
Leider hänge ich fest und komme nicht wirklich weiter.
Das Plugin wird korrekt unter Admin > Plugins erkannt und lässt sich aktivieren. Leider ist das Feld Einstellungen leer.
Normalerweise müssten hier Radiobuttons mit der Layout Auswahl erscheinen (Siehe Anhang). Leider funktioniert das Plugin auf der Seite selbst auch nicht.
Ich denke das die vorhandenen Layouts nicht korrekt eingelesen werden, ich habe es schon mit anderen Variablen der ehemaligen getdirs() versucht sowie BASE_DIR ohne Dollar Zeichen doch leider ohne Erfolg.
Hier der bisherige Code der index.php:
Es währe nett, wenn mir jemand einen Tipp geben könnte.
Vielen Dank im Voraus und Grüße
GS
ich versuche mich gerade an der Portierung von Arvid´s 1.12 Plugin Mobile Layout 1.0 für Mozillo 2.0.
Leider hänge ich fest und komme nicht wirklich weiter.
Das Plugin wird korrekt unter Admin > Plugins erkannt und lässt sich aktivieren. Leider ist das Feld Einstellungen leer.
Normalerweise müssten hier Radiobuttons mit der Layout Auswahl erscheinen (Siehe Anhang). Leider funktioniert das Plugin auf der Seite selbst auch nicht.
Ich denke das die vorhandenen Layouts nicht korrekt eingelesen werden, ich habe es schon mit anderen Variablen der ehemaligen getdirs() versucht sowie BASE_DIR ohne Dollar Zeichen doch leider ohne Erfolg.
Hier der bisherige Code der index.php:
Code Auswählen
<?php if(!defined('IS_CMS')) die();
/***************************************************************
*
* moziloCMS: Layoutumschalter für Mobilgeräte
*
* Zur Erkennung kommt das unter MIT-Lizenz stehende
* Mobile-Detect (https://github.com/serbanghita/Mobile-Detect)
* zum Einsatz.
*
***************************************************************/
class MobileLayout extends Plugin {
function getContent($value) {
global $syntax;
global $LAYOUT_DIR;
global $TEMPLATE_FILE;
global $CMS_CONF;
global $GALLERY_CONF;
// Prüfen: Ists ein Mobilgerät?
@require_once 'MobileDetect/Mobile_Detect.php';
$detect = new Mobile_Detect;
$deviceType = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer');
// Mobil-/Standardlayout explizit verlangt? In der Session merken
$showmobileparam = getRequestValue("mobile", true);
if ($showmobileparam == "1") {
$_SESSION['mozilocms_mobileplugin_showmobile'] = "1";
}
else if ($showmobileparam == "0") {
$_SESSION['mozilocms_mobileplugin_showmobile'] = "0";
}
$showmobile = ($deviceType != "computer") || ($_SESSION['mozilocms_mobileplugin_showmobile'] == "1");
$dontshowmobile = ($_SESSION['mozilocms_mobileplugin_showmobile'] == "0");
// Der Switch-URL (für {MobileLayout|switchurl})
if ($value == "switchurl") {
$uri = $this->curPageURL();
if (strpos($uri,'?') !== false) {
return $uri."&mobile=".($_SESSION['mozilocms_mobileplugin_showmobile'] == "1" ? 0 : 1);
}
else {
return $uri."?mobile=".($_SESSION['mozilocms_mobileplugin_showmobile'] == "1" ? 0 : 1);
}
return $uri;
}
// mobiles Layout für alle Mobilgeräte!
if ($showmobile && !$dontshowmobile) {
$_SESSION['mozilocms_mobileplugin_showmobile'] = "1";
// Das Mobillayout aus den Plugin-Einstellungen
$mobilelayout = $this->settings->get("mobilelayout");
if ($mobilelayout != "") {
// Layout-Platzhalter im Template ersetzen
$syntax->pluginSelfPlaceholderData("-platz~LAYOUT_DIR-platzend~", "layouts/".$mobilelayout);
$syntax->pluginSelfPlaceholderData("{LAYOUT_DIR}", "layouts/".$mobilelayout);
// CMS-Variablen überschreiben
$LAYOUT_DIR = "layouts/".$mobilelayout;
$TEMPLATE_FILE = "layouts/".$mobilelayout."/template.html";
// Submenu- und Galeriespalten-Einstellung aus dem Mobillayout holen
$settingsfile = $LAYOUT_DIR."/layoutsettings.conf";
$layoutsettings = new Properties($settingsfile);
$CMS_CONF->properties["usesubmenu"] = $layoutsettings->get("usesubmenu");
$GALLERY_CONF->properties["gallerypicsperrow"] = $layoutsettings->get("gallerypicsperrow");
// Template nochmal neu parsen (nur einmal, sonst entsteht die Rekursion des Todes^^)
if ($_SESSION['mozilocms_mobileplugin_templatereparsed'] != "1") {
$_SESSION['mozilocms_mobileplugin_templatereparsed'] = "1";
readTemplate();
}
}
$_SESSION['mozilocms_mobileplugin_templatereparsed'] = "0";
}
} // function getContent
/***************************************************************
*
* Gibt die Konfigurationsoptionen als Array zurück.
* Ist keine Konfiguration nötig, ist dieses Array leer.
*
***************************************************************/
function getConfig() {
global $ADMIN_CONF;
global $BASE_DIR;
global $specialchars;
$language = $ADMIN_CONF->get("language");
$config = array();
// Alle Layouts als Radiobuttons zur Auswahl anzeigen
$layoutdirs = getDirAsArray($BASE_DIR."layouts",true);
$layouts = array();
natcasesort($layoutdirs);
foreach ($layoutdirs as $file) {
$layouts[$file] = $specialchars->rebuildSpecialChars($file, true, true);
}
$config['mobilelayout'] = array(
"type" => "radio", // Pflicht: Eingabetyp
"description" => "Welches Layout als Mobil-Layout verwenden?", // Pflicht: Beschreibung
"descriptions" => $layouts,
);
return $config;
} // function getConfig
/***************************************************************
*
* Gibt die Plugin-Infos als Array zurück - in dieser
* Reihenfolge:
* - Name und Version des Plugins
* - für moziloCMS-Version
* - Kurzbeschreibung
* - Name des Autors
* - Download-URL
* - Platzhalter für die Selectbox
*
***************************************************************/
function getInfo() {
global $ADMIN_CONF;
$language = $ADMIN_CONF->get("language");
# nur eine Sprache ---------------------------------
$info = array(
// Plugin-Name + Version
"<b>MobileLayout</b> 1.0",
// moziloCMS-Version
"2.0",
// Kurzbeschreibung nur <span> und <br /> sind erlaubt
"Layout-Umschalter für Mobilgeräte",
// Name des Autors
"Arvid Zimmermann",
// Download-URL
"http://software.azett.com",
// Platzhalter für die Selectbox in der Editieransicht
// - ist das Array leer, erscheint das Plugin nicht in der Selectbox
array(
'{MobileLayout}' => 'Aktiviert das Plugin (muss irgendwo im verwendeten Standard-Layout stehen)',
'{MobileLayout|switchurl}' => 'URL zum Umschalten in den jeweils anderen Modus (Desktop->Mobil bzw. Mobil->Desktop'
)
);
// Rückgabe der Infos.
return $info;
} // function getInfo
// Rückgabe des aktuellen URLs
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
} // class MobileLayout
?>
Es währe nett, wenn mir jemand einen Tipp geben könnte.
Vielen Dank im Voraus und Grüße
GS