From 8401391596239110af2249ef79961dea38b76042 Mon Sep 17 00:00:00 2001 From: Eike Foken Date: Mon, 8 Aug 2011 20:29:33 +0200 Subject: [PATCH] Implement config & model upload for new projects --- application/controllers/projects.php | 108 +++++++++++++++++---------- application/views/project/new.php | 12 +-- 2 files changed, 73 insertions(+), 47 deletions(-) diff --git a/application/controllers/projects.php b/application/controllers/projects.php index d3f8f10..f5ff642 100644 --- a/application/controllers/projects.php +++ b/application/controllers/projects.php @@ -2,29 +2,29 @@ /* * Copyright (c) 2011 Karsten Heiken - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +*/ /** * @author Karsten Heiken - */ +*/ class Projects extends MY_Controller { /** @@ -50,56 +50,82 @@ class Projects extends MY_Controller { * Allows users to create a new project. */ public function create() { + $this->load->library('upload'); $this->load->library('form_validation'); $this->form_validation->set_error_delimiters('', ''); $config = array( - array( + array( 'field' => 'name', 'label' => 'Projektname', 'rules' => 'trim|required|min_length[3]|max_length[100]|xss_clean', - ), - array( + ), + array( 'field' => 'description', 'label' => 'Beschreibung', 'rules' => 'trim|required|xss_clean', - ), - array( + ), + array( 'field' => 'defaultmodel', 'label' => '3D-Modell', - ), - array( + ), + array( 'field' => 'defaultconfig', 'label' => 'Standard-Konfiguration', - ), + ), ); $this->form_validation->set_rules($config); + $config = array(); + $config['upload_path'] = '/tmp'; + $config['allowed_types'] = 'zip'; + $config['max_size'] = '1024'; + $config['file_name'] = 'defaultmodel'; - if ($this->form_validation->run() == FALSE) { - $this->load->view('project/new'); + $this->upload->initialize($config); + $modelUploaded = $this->upload->do_upload('defaultmodel'); + $modelData = $this->upload->data(); + + $config['file_name'] = 'defaultconfig'; + + $this->upload->initialize($config); + $configUploaded = $this->upload->do_upload('defaultconfig'); + $configData = $this->upload->data(); + + // run form validation + if ($this->form_validation->run() == false || $modelUploaded == false || $configUploaded == false) { + $data['model']['success'] = $modelUploaded; + $data['config']['success'] = $configUploaded; + + $this->load->view('project/new', $data); } else { - // TODO: handle file upload - $data = array( 'name' => $this->input->post('name'), 'description' => $this->input->post('description'), - 'defaultmodel' => "todo", - 'defaultconfig' => "todo", + 'defaultmodel' => $modelData['file_name'], + 'defaultconfig' => $configData['file_name'], ); $data['project_id'] = $this->project->create($data); - if ($data['project_id']) { + + if (isset($data['project_id'])) { $userpath = FCPATH . 'uploads/' . $this->session->userdata('user_id') . '/'; $projectpath = $userpath . $data['project_id'] . '/'; - if (!is_dir($projectpath)) - if(!is_dir($userpath)) + + if (!is_dir($projectpath)) { + if (!is_dir($userpath)) { mkdir($userpath, 0777); + chmod($userpath, 0777); + } mkdir($projectpath, 0777); - chmod($userpath, 0777); - chmod($projectpath, 0777); - $this->messages->add($projectpath, 'notice'); + chmod($projectpath, 0777); + } + + copy($modelData['full_path'], $projectpath . $modelData['file_name']); + copy($configData['full_path'], $projectpath . $configData['file_name']); + + $this->messages->add($projectpath, 'notice'); redirect('/projects/detail/' . $data['project_id'], 301); } else { $this->messages->add('Das Projekt konnte nicht gespeichert werden.', 'error'); @@ -132,7 +158,7 @@ class Projects extends MY_Controller { /** * Allows users to delete a project. * - * @param unknown_type $projectId + * @param integer $projectId */ public function delete($projectId) { $this->project->delete($projectId); diff --git a/application/views/project/new.php b/application/views/project/new.php index 1b99223..d3b0ace 100644 --- a/application/views/project/new.php +++ b/application/views/project/new.php @@ -8,14 +8,14 @@
- -
+ +

Erforderliche Angaben zum Projekt

  • Projektname *

    - +
  • @@ -23,7 +23,7 @@

    Beschreibung

    - +
    @@ -36,7 +36,7 @@ Es kann weiterhin bei jedem Versuch ein anderes Modell gewählt werden.
    - + upload->display_errors('', '');?>
  • @@ -45,7 +45,7 @@ Diese Konfiguration kann bei jedem Versuch geändert werden.
    - + upload->display_errors('', '');?>