File

Zum Hochladen von Dateien gibt es ein File Widget. Die Struktur für die Content Structure ist:

<?
...
public contentStructure(){
   return array(
      array(
          "key"=>"variablenname",
          "label"=> "Ein Bild",
          "type" => "file",
          "uploadpath" => "/grid_file_endpoint",
      )
   );
}

public function performFileUpload($key,$path){
   if($key!="image")
      return FALSE;//array('result'=>FALSE,'error'=>'wrong box');
   $content=file_get_contents($path);
   $filename=basename($path);
   $file=file_save_data($content,"public://".$filename);
   return $file->fid;
}

...
?>

Für den File Upload muss zusätzlich die Methode performFileUpload in die Box Klasse implementiert werden. Diese hat die Parameter $key und $path.

$key ist ein eindeutiger Identifikator in der contentStructure. Er entspricht zumeist dem Variablennamen. Ist der File Upload allerdings in einer Liste eingebettet, so entspricht der $key dem Listen Key und dem File Widget Key mit einem Punkt verbunden.

$path ist der Pfad zur hochgeladenen Datei. Die Datei sollte im CMS gespeichert werden. Die Rückgabe der Funktion muss ein Wert sein, mit dem man später in der build Methode wieder an das Bild gelangt.

INFO: Für WordPress gibt es das WordPress Mediaselect Widget.