From e832c997fb3c7cfae2b7acbd5c665d844b4d42f8 Mon Sep 17 00:00:00 2001 From: Lorenzo Giacomelli Date: Mon, 25 Jan 2016 18:25:18 +0100 Subject: [PATCH] MediaRender cambiati per i diversi mediaTypes Aggiunta funzione per savare media non file based Fixata editNotizie che non salvava l'author addMultimedia funzionante (da testare bene) --- .../lib/dao/mediaModels/DaoMediaHandler.php | 19 ++- .../lib/media/mediaRenderers/MediaImage.php | 10 +- .../media/mediaRenderers/MediaLocalVideo.php | 8 +- private/lib/media/mediaRenderers/MediaPdf.php | 8 +- .../lib/media/mediaRenderers/MediaYoutube.php | 4 +- public/admin/addMultimedia.php | 142 ++++++++++++++++++ public/admin/editNotizie.php | 8 +- public/admin/homeMultimedia.php | 33 ++-- public/style/admin.css | 2 +- 9 files changed, 204 insertions(+), 30 deletions(-) create mode 100644 public/admin/addMultimedia.php diff --git a/private/lib/dao/mediaModels/DaoMediaHandler.php b/private/lib/dao/mediaModels/DaoMediaHandler.php index ab6677b..ee78ee5 100644 --- a/private/lib/dao/mediaModels/DaoMediaHandler.php +++ b/private/lib/dao/mediaModels/DaoMediaHandler.php @@ -151,7 +151,13 @@ class DaoMediaHandler implements MediaHandlerInterface{ return $tmp; } - + /** + * Richiede un saveable object con almeno la proprietà mediaType e il path del file + * + * @param stdClass $saveableObj + * @param string $filePath + * @return MediaModel + */ public static function createNewFileBasedMedia($saveableObj, $filePath){ $basepath = GlobalVariables::get("config")->paths->media; $info = pathinfo($filePath); @@ -162,6 +168,17 @@ class DaoMediaHandler implements MediaHandlerInterface{ return $media; } + /** + * Richiede un saveable object con la proprietà mediaType settata + * + * @param stdClass $saveable + * @return MediaModel + */ + public static function createNewTextBasedMedia($saveable){ + $media = new MediaModel($saveable); + return $media; + } + } ?> \ No newline at end of file diff --git a/private/lib/media/mediaRenderers/MediaImage.php b/private/lib/media/mediaRenderers/MediaImage.php index 768132d..61ac098 100644 --- a/private/lib/media/mediaRenderers/MediaImage.php +++ b/private/lib/media/mediaRenderers/MediaImage.php @@ -6,14 +6,12 @@ class MediaImage implements MediaRendererInterface{ $this->id = $id; } - public function asText(){ - return ''. - ''. - ''; + public function asText($size){ + return ''; } - public function render(){ - echo $this->asText(); + public function render($size = "small"){ + echo $this->asText($size); } } ?> \ No newline at end of file diff --git a/private/lib/media/mediaRenderers/MediaLocalVideo.php b/private/lib/media/mediaRenderers/MediaLocalVideo.php index cc7cd88..7e8ee0c 100644 --- a/private/lib/media/mediaRenderers/MediaLocalVideo.php +++ b/private/lib/media/mediaRenderers/MediaLocalVideo.php @@ -1,14 +1,14 @@ modelRef = $model; + public function __construct($id){ + $this->id = $id; } public function asText(){ - return $this->modelRef->path; + return $this->id; } public function render(){ diff --git a/private/lib/media/mediaRenderers/MediaPdf.php b/private/lib/media/mediaRenderers/MediaPdf.php index 6ff1375..4ad7eb1 100644 --- a/private/lib/media/mediaRenderers/MediaPdf.php +++ b/private/lib/media/mediaRenderers/MediaPdf.php @@ -1,14 +1,14 @@ modelRef = $model; + public function __construct($id){ + $this->id = $model; } public function asText(){ - return $this->modelRef->path; + return $this->id; } public function render(){ diff --git a/private/lib/media/mediaRenderers/MediaYoutube.php b/private/lib/media/mediaRenderers/MediaYoutube.php index 3812f19..3397a46 100644 --- a/private/lib/media/mediaRenderers/MediaYoutube.php +++ b/private/lib/media/mediaRenderers/MediaYoutube.php @@ -8,7 +8,9 @@ class MediaYoutube implements MediaRendererInterface{ } public function asText(){ - return $this->link; + return ''; } public function render(){ diff --git a/public/admin/addMultimedia.php b/public/admin/addMultimedia.php new file mode 100644 index 0000000..830c09e --- /dev/null +++ b/public/admin/addMultimedia.php @@ -0,0 +1,142 @@ +hasRole(AdminModel::ADMIN_TYPE_EDITORE_SUPERVISOR) && + !AdminLoginManager::getLogged()->hasRole(AdminModel::ADMIN_TYPE_EDITORE)){ + GUIHandler::redirect("admin/index.php"); +} + +try{ + $error = ""; + $notiziaId = PostHandler::get("id"); + + $notizia = new stdClass(); + if(is_null($notiziaId) || strcmp($notiziaId, "")==0){ + throw new CoreException("Trying to add a media to an invalid model with id '".$notiziaId. "'"); + } + else{ + $mediaTypeSaved = PostHandler::get("mediaType"); + if(array_key_exists("action", $_POST) && strcmp(PostHandler::get("action"), "save")==0){ + $notizia = GlobalVariables::get("dao")->getFirst("NotiziaModel",array("id"=>$notiziaId)); + + $file = ""; + + $mediaType = PostHandler::get("mediaType"); + if(strcmp($mediaType, "")!=0){ + $tmp = array(); + $saveable = new stdClass(); + $saveable->mediaType = $mediaType; + if(strcmp($mediaType,MediaModel::TYPE_YOUTUBE)==0){ + $saveable->link = PostHandler::get("data"); + $media = DaoMediaHandler::createNewTextBasedMedia($saveable); + } + else if(strcmp($mediaType,MediaModel::TYPE_HTML5)==0){ + $saveable->code = PostHandler::get("data"); + $media = DaoMediaHandler::createNewTextBasedMedia($saveable); + } + else { + $saveable->path = PostHandler::get("data"); + $file = $_FILES['data']['tmp_name']; +// $file = PostHandler::get("data"); + $media = DaoMediaHandler::createNewFileBasedMedia($saveable, $file); + } + + if(!is_null($media)){ + GlobalVariables::get("dao")->save($media); + DaoMediaHandler::addMedia($notizia, $media); + GlobalVariables::get("dao")->save($notizia); + } + else{ + throw new Exception("Cannot save a null media in the news with id '".$notiziaId."'"); + } + } + else{ + throw new Exception("Invalid mediaType '".$mediaType."' while trying to add the media in addMultimedia"); + } + + GUIHandler::redirectPost("admin/homeMultimedia.php",array("id"=>$notiziaId)); + } + } + + $formFile = ' + '; + + $formYoutube = 'url: '; + + $formHtml = 'Inserire html: '; + +}catch(GUIException $ex){ + $error = $ex->getMessage(); +}catch (Exception $exec){ + LoggingFacilityManager::getLogger("gui")->log(LoggingFacility::$LEVEL_ERROR, $exec->getMessage()); + $error = "Si è verificato un errore inaspettato durante l'esecuzione della pagina. Se l'errore persiste contattare il supporto tecnico."; +} + +MenuGenerator::generateMenu(); +HTMLHelper::generateAdminHead(); +?> +
+ +
+
+
Selezionare tipo multimedia: + +
+
+ // + if(strcmp($mediaTypeSaved, MediaModel::TYPE_YOUTUBE)==0){ + echo $formYoutube; + } + else if(strcmp($mediaTypeSaved, MediaModel::TYPE_HTML5)==0){ + echo $formHtml; + } + else{ + echo $formFile; + } + ?> + + +
+ Invia + Back +
+
+
+
+ \ No newline at end of file diff --git a/public/admin/editNotizie.php b/public/admin/editNotizie.php index 9c3c488..f1ba3de 100644 --- a/public/admin/editNotizie.php +++ b/public/admin/editNotizie.php @@ -51,7 +51,12 @@ try{ $notizia->titolo = PostHandler::get("titolo"); $notizia->sottotitolo = PostHandler::get("sottotitolo"); $notizia->testo = PostHandler::get("testo"); - $notizia->about->author = PostHandler::get("author"); + if(strcmp(PostHandler::get("author"), "")==0){ + $notizia->about->author = AdminLoginManager::getLogged()->nome." ".AdminLoginManager::getLogged()->cognome; + } + else{ + $notizia->about->author = PostHandler::get("author"); + } $dateString = PostHandler::get("data")." ".PostHandler::get("time"); if(!preg_match("/^[0-9]{2}[-][0-9]{2}[-][0-9]{4} [0-9]{2}[:][0-9]{2}$/", $dateString)){ throw new GUIException("Il formato della data inserita non è corretto. Per favore segui il seguente formato Date: dd-mm-yyyy hh:ii"); @@ -65,7 +70,6 @@ try{ if(!$edit){ $notizia->status = NotiziaModel::STATUS_PENDING; - $notizia->about->author = AdminLoginManager::getLogged()->nome." ".AdminLoginManager::getLogged()->cognome; $notizia->about->owner = AdminLoginManager::getLogged()->id; } diff --git a/public/admin/homeMultimedia.php b/public/admin/homeMultimedia.php index 9bc6659..c6ba851 100644 --- a/public/admin/homeMultimedia.php +++ b/public/admin/homeMultimedia.php @@ -52,31 +52,42 @@ HTMLHelper::generateAdminHead();
- -
- renderMedia();}?> + 0){ + foreach ($medias as $media){?> +
+ renderMedia();?>
+
+
\ No newline at end of file diff --git a/public/style/admin.css b/public/style/admin.css index 665cc7a..247bb3c 100644 --- a/public/style/admin.css +++ b/public/style/admin.css @@ -13,7 +13,7 @@ #admin_menu ul ul{height:0px;} .admin_head{margin-left:300px;} -.admin_head + div{margin-left:300px; padding: 20px; position:relative;} +.admin_head + div{margin-left:300px; padding: 20px; position:relative;min-height:50px;} table.dataTable th{text-align:left; }