Changeset 254


Ignore:
Timestamp:
11/02/09 12:16:28 (10 years ago)
Author:
sander
Message:

Added public galleries. Closes bug #6

Location:
branches/gallery/server/www/app
Files:
8 added
6 edited

Legend:

Unmodified
Added
Removed
  • branches/gallery/server/www/app/app_controller.php

    r234 r254  
    124124                                'results:view', 
    125125                                'results:download', 
     126                                'galleries:add', 
     127                                'galleries:edit', 
     128                                'galleries:delete', 
     129                                'galleries:add_document', 
     130                                'galleries:remove_document', 
    126131                        ); 
    127132 
  • branches/gallery/server/www/app/config/sql/schema.php

    r253 r254  
    11<?php  
    22/* SVN FILE: $Id$ */ 
    3 /* App schema generated on: 2009-10-30 12:10:17 : 1256902037*/ 
     3/* App schema generated on: 2009-11-02 12:11:19 : 1257160459*/ 
    44class AppSchema extends CakeSchema { 
    55        var $name = 'App'; 
     
    5454                        'worker_id' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 36), 
    5555                        'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1)) 
     56                ); 
     57        var $galleries = array( 
     58                        'id' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 36, 'key' => 'primary'), 
     59                        'name' => array('type' => 'string', 'null' => false, 'default' => NULL), 
     60                        'slug' => array('type' => 'string', 'null' => false, 'default' => NULL, 'key' => 'index'), 
     61                        'user_id' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 36), 
     62                        'group_id' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 36), 
     63                        'description' => array('type' => 'text', 'null' => false, 'default' => NULL), 
     64                        'description_html' => array('type' => 'text', 'null' => false, 'default' => NULL), 
     65                        'created' => array('type' => 'datetime', 'null' => false, 'default' => NULL), 
     66                        'modified' => array('type' => 'datetime', 'null' => false, 'default' => NULL), 
     67                        'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1), 'slug' => array('column' => 'slug', 'unique' => 0)) 
     68                ); 
     69        var $galleries_requests = array( 
     70                        'id' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 36, 'key' => 'primary'), 
     71                        'gallery_id' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 36, 'key' => 'index'), 
     72                        'request_id' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 36, 'key' => 'index'), 
     73                        'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1), 'gallery_id' => array('column' => 'gallery_id', 'unique' => 0), 'request_id' => array('column' => 'request_id', 'unique' => 0)) 
    5674                ); 
    5775        var $groups = array( 
  • branches/gallery/server/www/app/controllers/jobs_controller.php

    r206 r254  
    5858                } 
    5959                 
     60                $this->Job->contain(array( 
     61                        'Request', 
     62                        'Request.Gallery', 
     63                        'Platform', 
     64                        'Application', 
     65                        'Factory', 
     66                        'Result', 
     67                )); 
    6068                $job = $this->Job->read(null, $id); 
    61                 if ($job['Request']['user_id'] != $this->AuthCert->user('id')) { 
     69                 
     70                $isValid = ( 
     71                        !empty($job['Request']['Gallery']) || 
     72                        $job['Request']['user_id'] == $this->AuthCert->user('id') 
     73                ); 
     74 
     75                if (!$isValid) { 
    6276                        $this->Session->setFlash(__('Invalid Job.', true)); 
    6377                        $this->redirect(array('controller' => 'requests', 'action'=>'index')); 
  • branches/gallery/server/www/app/controllers/requests_controller.php

    r252 r254  
    6565         * 
    6666         * @param string $id The request ID 
     67         * @param $type the access type, either 'read' or 'write' 
    6768         * @return array An array containing the request 
    6869         */ 
    69         private function _getRequest($id) 
     70        private function _getRequest($id, $type = 'read') 
    7071        { 
    7172                if (!$id) { 
     
    8485                        'Job.Result.Mimetype', 
    8586                        'Job.Result.Format', 
     87                        'Gallery', 
    8688                )); 
    8789 
    8890                $request = $this->Request->read(null, $id); 
    89                 if ($request['Request']['user_id'] != $this->AuthCert->user('id')) { 
     91                if (empty($request)) { 
    9092                        $this->Session->setFlash(__('Invalid Request.', true)); 
    9193                        $this->redirect(array('action'=>'add')); 
    9294                } 
    9395 
    94                 return $request; 
     96                if ($request['Request']['user_id'] == $this->AuthCert->user('id')) { 
     97                        return $request; 
     98                } 
     99 
     100                if ($type == 'read' && !empty($request['Gallery'])) { 
     101                        return $request; 
     102                } 
     103 
     104                $this->Session->setFlash(__('Invalid Request.', true)); 
     105                $this->redirect(array('action'=>'add')); 
    95106        } 
    96107 
     
    106117                $this->helpers[] = 'JobModel'; 
    107118 
    108                 $request = $this->_getRequest($id); 
     119                $request = $this->_getRequest($id, 'read'); 
    109120                $this->set(array( 
    110121                        'request' => $request, 
     
    122133        public function edit($id = null) 
    123134        { 
    124                 $request = $this->_getRequest($id); 
     135                $request = $this->_getRequest($id, 'write'); 
    125136 
    126137                if (!empty($this->data)) { 
     
    286297        public function download($id = null) 
    287298        { 
    288                 $request = $this->_getRequest($id); 
     299                $request = $this->_getRequest($id, 'read'); 
    289300                extract($this->Request->createZip()); 
    290301                 
     
    306317        public function extend($id = null) 
    307318        { 
    308                 $request = $this->_getRequest($id); 
     319                $request = $this->_getRequest($id, 'write'); 
    309320 
    310321                if (strtotime($request['Request']['expire']) < time()) { 
     
    324335        public function cancel($id = null) 
    325336        { 
    326                 $request = $this->_getRequest($id); 
     337                $request = $this->_getRequest($id, 'write'); 
    327338                $this->Request->cancel(); 
    328339                $this->redirect(array('action' => 'view', $id)); 
  • branches/gallery/server/www/app/models/request.php

    r252 r254  
    4545        public $hasMany = 'Job'; 
    4646 
     47        /** @var array Requests can belong to multiple galleries */ 
     48        public $hasAndBelongsToMany = array('Gallery'); 
     49 
    4750        /** @var array Use the file behaviour to associate ODF files with Requests */ 
    4851        public $actsAs = array('File' => 'files/requests', 'Containable', 'BeanStalk.Deferrable'); 
  • branches/gallery/server/www/app/views/layouts/default.ctp

    r250 r254  
    5454                        <p id="top-controllers"> 
    5555                                <a href="/"><?php __('Home'); ?></a> 
     56                                <a href="/galleries"><?php __('Galleries'); ?></a> 
    5657                                <a href="/pages/contribute"><?php __('Contribute'); ?></a> 
    5758                                <?php foreach ($topControllers as $controllerName => $controllerPath): ?> 
Note: See TracChangeset for help on using the changeset viewer.