Mobile Skinselector (CMS)
Für die mobilen Skins im CMSbrauchen wir heute eine Erweiterung des Skinselectors. Aus der Erweiterung habe ich eine neue Klasse gemacht, da es in unserem Control-System nicht möglich war, den mobilen Skinselector mitaufzunehmen.
Als erstes müssen wir nun den Setting in der Datenbank auf das neue Control ändern:
UPDATE `cms_settings` SET `type` = 'mobileskinselector' WHERE CONVERT( `property` USING utf8 ) = 'selectedmobileskin' LIMIT 1 ;
Nun muss noch die Klasse /system/classes/skincontroller.phperweitert werden. Sie muss nun zwischen mobilen und normalen Skins unterscheiden können.
function getCurrentSkinName(){ if(Mobile::isMobileDevice()){ return self::getCurrentMobileSkinName(); } else{ return self::getCurrentDesktopSkinName(); } } function getCurrentMobileSkinName(){ $res = $GLOBALS['db']->ReadField("SELECT name FROM {'dbprefix'}skins WHERE id = '".SkinController::getCurrentMobileSkinId()."'"); if($res){ return $res; } else{ return "mobile"; } } function getCurrentDesktopSkinName(){ $res = $GLOBALS['db']->ReadField("SELECT name FROM {'dbprefix'}skins WHERE id = '".SkinController::getCurrentSkinId()."'"); if($res){ return $res; } else{ return "default"; } }
Und zu guter letzt gibt es die neue Klasse /system/classes/mobileskinselector.php:
<?PHP classmobileskinselector extends Control{ public function display(){ ?> <input type="hidden" name="<?PHP echo htmlentities($this->name); ?>" value="<?PHP echo htmlentities($this->value); ?>" /> <img id="mobilebtnLeft" OnClick="document.getElementsByName('<?PHP echo htmlentities($this->name); ?>')[0].value--; document.getElementById('mobileskinpreview').src='/system/skins/' + mobileskins[document.getElementsByName('<?PHP echo htmlentities($this->name); ?>')[0].value-1]['name'] + '/screenshot.jpg'; document.getElementById('mobilebtnRight').style.visibility='visible'; if(1 == document.getElementsByName('<?PHP echo htmlentities($this->name); ?>')[0].value){ document.getElementById('mobilebtnLeft').style.visibility='hidden' };" src="/system/images/btnLeft.gif" /> <img id="mobileskinpreview" style="border:1px solid #aaa" src="/system/skins/<?PHP echo SkinController::getCurrentMobileSkinName(); ?>/screenshot.jpg" /> <img id="mobilebtnRight" OnClick="document.getElementsByName('<?PHP echo htmlentities($this->name); ?>')[0].value++; document.getElementById('mobileskinpreview').src='/system/skins/' + mobileskins[document.getElementsByName('<?PHP echo htmlentities($this->name); ?>')[0].value-1]['name'] + '/screenshot.jpg'; if(mobileskins.length == document.getElementsByName('<?PHP echo htmlentities($this->name); ?>')[0].value){ document.getElementById('mobilebtnRight').style.visibility='hidden'; } document.getElementById('mobilebtnLeft').style.visibility='visible';" src="/system/images/btnRight.gif" /> <script language="JavaScript"> varmobileskins = new Array(); <?PHP $i = 0; foreach(SkinController::getInstalledSkins() as $skin){ echo "mobileskins[".$i."] = new Object();"; echo "mobileskins[".$i."]["id"] = "".$skin->id."";"; echo "mobileskins[".$i."]["name"] = "".$skin->name."";"; $i++; } ?> if(mobileskins.length ==document.getElementsByName('<?PHP echo htmlentities($this->name); ?>')[0].value){ document.getElementById('mobilebtnRight').style.visibility='hidden'; } if(1 ==document.getElementsByName('<?PHP echo htmlentities($this->name); ?>')[0].value){ document.getElementById('mobilebtnLeft').style.visibility='hidden'; } </script> <?PHP } } ?>
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Über uns
![Stefan Wienströer](/i/stefan-264.png)
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project