Changeset 256


Ignore:
Timestamp:
11/02/09 12:38:35 (11 years ago)
Author:
sander
Message:

Merged gallery branch back to trunk

Location:
trunk
Files:
14 edited
157 copied

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/server/www/app/app_controller.php

    r234 r256  
    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 
  • trunk/server/www/app/config/sql/schema.php

    r223 r256  
    11<?php  
    22/* SVN FILE: $Id$ */ 
    3 /* App schema generated on: 2009-07-22 09:07:06 : 1248246186*/ 
     3/* App schema generated on: 2009-11-02 12:11:19 : 1257160459*/ 
    44class AppSchema extends CakeSchema { 
    55        var $name = 'App'; 
     
    5555                        'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1)) 
    5656                ); 
     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)) 
     74                ); 
    5775        var $groups = array( 
    5876                        'id' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 36, 'key' => 'primary'), 
    5977                        'name' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 40), 
    6078                        'request_limit' => array('type' => 'integer', 'null' => false, 'default' => NULL, 'length' => 5), 
     79                        'default' => array('type' => 'boolean', 'null' => false, 'default' => NULL), 
    6180                        'default_memberlist' => array('type' => 'string', 'null' => false, 'default' => NULL), 
    6281                        'created' => array('type' => 'datetime', 'null' => true, 'default' => NULL), 
     
    132151                        'state' => array('type' => 'integer', 'null' => false, 'default' => '1'), 
    133152                        'state_info' => array('type' => 'string', 'null' => false, 'default' => NULL), 
     153                        'description' => array('type' => 'text', 'null' => false, 'default' => NULL), 
     154                        'description_html' => array('type' => 'text', 'null' => false, 'default' => NULL), 
    134155                        'job_count' => array('type' => 'integer', 'null' => false, 'default' => '0'), 
    135156                        'result_count' => array('type' => 'integer', 'null' => false, 'default' => '0'), 
  • trunk/server/www/app/controllers/jobs_controller.php

    r206 r256  
    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')); 
  • trunk/server/www/app/controllers/requests_controller.php

    r222 r256  
    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, 
     
    113124        } 
    114125 
     126 
     127        /** 
     128         * Edit a request description 
     129         * 
     130         * @param string $id The request ID 
     131         * @return void 
     132         */ 
     133        public function edit($id = null) 
     134        { 
     135                $request = $this->_getRequest($id, 'write'); 
     136 
     137                if (!empty($this->data)) { 
     138                        $this->data['Request']['id'] = $id; 
     139                        if (!$this->Request->save($this->data)) { 
     140                                $this->Session->setFlash(__('Unable to save the description', true)); 
     141                        } else { 
     142                                $this->redirect(array('action' => 'view', $id)); 
     143                        } 
     144                } 
     145 
     146                $this->set(array( 
     147                        'request' => $request, 
     148                )); 
     149        } 
    115150        /** 
    116151         * Add a new request 
     
    262297        public function download($id = null) 
    263298        { 
    264                 $request = $this->_getRequest($id); 
     299                $request = $this->_getRequest($id, 'read'); 
    265300                extract($this->Request->createZip()); 
    266301                 
     
    282317        public function extend($id = null) 
    283318        { 
    284                 $request = $this->_getRequest($id); 
     319                $request = $this->_getRequest($id, 'write'); 
    285320 
    286321                if (strtotime($request['Request']['expire']) < time()) { 
     
    300335        public function cancel($id = null) 
    301336        { 
    302                 $request = $this->_getRequest($id); 
     337                $request = $this->_getRequest($id, 'write'); 
    303338                $this->Request->cancel(); 
    304339                $this->redirect(array('action' => 'view', $id)); 
  • trunk/server/www/app/models/group.php

    r223 r256  
    7272                } 
    7373 
    74                 return $this->save(array( 
    75                         'User' => array('id' => $user_id), 
    76                 )); 
     74                $relation = $this->GroupsUser->find('first', array('conditions' => array( 
     75                        'group_id' => $group_id, 
     76                        'user_id' => $user_id, 
     77                ))); 
     78 
     79                if (!empty($relation)) { 
     80                        return true; 
     81                } 
     82 
     83                $this->GroupsUser->create(); 
     84                return $this->GroupsUser->save(array('GroupsUser' => array( 
     85                        'group_id' => $group_id, 
     86                        'user_id' => $user_id, 
     87                ))); 
    7788        } 
    7889 
     
    108119                } 
    109120        } 
     121 
     122        /** 
     123         * After creating a new 'default' group, add all existing users to it. 
     124         * @param boolean $created Whether the saved user was newly created or not 
     125         */ 
     126        public function afterSave($created) 
     127        { 
     128                if (!$created || !$this->data['Group']['default']) { 
     129                        return; 
     130                } 
     131 
     132                $users = $this->User->find('all', array( 
     133                        'recursive' => -1, 
     134                )); 
     135 
     136                foreach ($users as $user) { 
     137                        $this->add_member($user['User']['id'], $this->id); 
     138                } 
     139        } 
    110140} 
    111141 
  • trunk/server/www/app/models/request.php

    r205 r256  
    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'); 
     
    285288                $this->save(); 
    286289        } 
     290 
     291        /** 
     292         * Convert the Markdown description to HTML before saving 
     293         * @return boolean True to continue saving 
     294         */ 
     295        public function beforeSave() 
     296        { 
     297                if (isset($this->data['Request']['description'])) { 
     298                        App::import('Vendor', 'markdown'); 
     299                        App::import('Vendor', 'HTMLPurifier', array('file' => 'htmlpurifier/HTMLPurifier.standalone.php')); 
     300 
     301                        $config = HTMLPurifier_Config::createDefault(); 
     302                        $config->set('Cache.SerializerPath', CACHE . DS . 'htmlpurifier'); 
     303                        $purifier = new HTMLPurifier($config); 
     304 
     305                        $desc_html = Markdown($this->data['Request']['description']); 
     306                        $this->data['Request']['description_html'] = $purifier->purify($desc_html); 
     307                } 
     308 
     309                return true; 
     310        } 
    287311} 
    288312 
  • trunk/server/www/app/views/groups/admin_edit.ctp

    r223 r256  
    1515                echo $form->input('request_limit'); 
    1616                echo $form->input('default_memberlist'); 
     17                echo $form->input('default', array('label' => __('Automatically add all registered users to this group', true))); 
    1718        ?> 
    1819        </fieldset> 
  • trunk/server/www/app/views/groups/admin_index.ctp

    r222 r256  
    1010<tr> 
    1111        <th><?php echo $paginator->sort('name');?></th> 
     12        <th><?php __('Default'); ?></th> 
    1213        <th><?php echo $paginator->sort('request_limit');?></th> 
    1314        <th><?php __('Number of members'); ?></th> 
     
    2728                <td> 
    2829                        <?php echo $html->link($group['Group']['name'], array('action'=>'view', $group['Group']['id'])); ?> 
     30                </td> 
     31                <td> 
     32                        <?php $group['Group']['default'] ? __('Yes') : __('No'); ?> 
    2933                </td> 
    3034                <td> 
  • trunk/server/www/app/views/groups/admin_view.ctp

    r223 r256  
    1010                <dd<?php if ($i++ % 2 == 0) echo $class;?>> 
    1111                        <?php echo $group['Group']['request_limit']; ?> 
     12                        &nbsp; 
     13                </dd> 
     14                <dt<?php if ($i % 2 == 0) echo $class;?>><?php __('Default'); ?></dt> 
     15                <dd<?php if ($i++ % 2 == 0) echo $class;?>> 
     16                        <?php $group['Group']['default'] ? __('Yes') : __('No'); ?> 
    1217                        &nbsp; 
    1318                </dd> 
  • trunk/server/www/app/views/layouts/default.ctp

    r250 r256  
    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): ?> 
  • trunk/server/www/app/views/requests/view.ctp

    r205 r256  
    4040                                        echo $html->link(__('Download all results', true), array('action' => 'download', $request['Request']['id'])); 
    4141                                } 
     42 
    4243                        ?> 
    43                         &nbsp; 
     44                        - <?php echo $html->link(__('Edit description', true), array('action' => 'edit', $request['Request']['id']));?> 
    4445                </dd> 
    4546        </dl> 
    4647</div> 
     48 
     49<?php 
     50        if (!empty($request['Request']['description_html'])) { 
     51                echo '<h3>' . __('Description', true) . '</h3>'; 
     52                echo $request['Request']['description_html']; 
     53        } 
     54?> 
    4755 
    4856<?php if (!empty($request['Job'])):?> 
  • trunk/server/www/app/webroot/css/cake.generic.css

    r234 r256  
    117117/* Content */ 
    118118#content p { 
    119         margin-top: 1.25em; 
     119        margin-top: 0.7em; 
     120        margin-bottom: 0.7em; 
    120121} 
    121122 
  • trunk/server/www/app/webroot/css/cake.override.css

    r250 r256  
    238238h1, h2, h3, h4 { color: #006bbe; } 
    239239.clearer { clear: both; } 
     240span.hi { background-color: #bbb; } 
Note: See TracChangeset for help on using the changeset viewer.