Kontakt aufnehmen

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

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern