0251 / 590 837 15
info@a-coding-project.de
;

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
    }

  }
?>