Changeset 252


Ignore:
Timestamp:
10/29/09 15:54:42 (11 years ago)
Author:
sander
Message:

Allow descriptions on requests using Markdown and WMD

Location:
branches/gallery/server/www/app
Files:
148 added
6 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/gallery/server/www/app/config/sql/schema.php

    r223 r252  
    11<?php  
    22/* SVN FILE: $Id$ */ 
    3 /* App schema generated on: 2009-07-22 09:07:06 : 1248246186*/ 
     3/* App schema generated on: 2009-10-29 15:10:56 : 1256827436*/ 
    44class AppSchema extends CakeSchema { 
    55        var $name = 'App'; 
     
    132132                        'state' => array('type' => 'integer', 'null' => false, 'default' => '1'), 
    133133                        'state_info' => array('type' => 'string', 'null' => false, 'default' => NULL), 
     134                        'description' => array('type' => 'text', 'null' => false, 'default' => NULL), 
     135                        'description_html' => array('type' => 'text', 'null' => false, 'default' => NULL), 
    134136                        'job_count' => array('type' => 'integer', 'null' => false, 'default' => '0'), 
    135137                        'result_count' => array('type' => 'integer', 'null' => false, 'default' => '0'), 
  • branches/gallery/server/www/app/controllers/requests_controller.php

    r222 r252  
    113113        } 
    114114 
     115 
     116        /** 
     117         * Edit a request description 
     118         * 
     119         * @param string $id The request ID 
     120         * @return void 
     121         */ 
     122        public function edit($id = null) 
     123        { 
     124                $request = $this->_getRequest($id); 
     125 
     126                if (!empty($this->data)) { 
     127                        $this->data['Request']['id'] = $id; 
     128                        if (!$this->Request->save($this->data)) { 
     129                                $this->Session->setFlash(__('Unable to save the description', true)); 
     130                        } else { 
     131                                $this->redirect(array('action' => 'view', $id)); 
     132                        } 
     133                } 
     134 
     135                $this->set(array( 
     136                        'request' => $request, 
     137                )); 
     138        } 
    115139        /** 
    116140         * Add a new request 
  • branches/gallery/server/www/app/models/request.php

    r205 r252  
    285285                $this->save(); 
    286286        } 
     287 
     288        /** 
     289         * Convert the Markdown description to HTML before saving 
     290         * @return boolean True to continue saving 
     291         */ 
     292        public function beforeSave() 
     293        { 
     294                if (isset($this->data['Request']['description'])) { 
     295                        App::import('Vendor', 'markdown'); 
     296                        App::import('Vendor', 'HTMLPurifier', array('file' => 'htmlpurifier/HTMLPurifier.standalone.php')); 
     297 
     298                        $config = HTMLPurifier_Config::createDefault(); 
     299                        $config->set('Cache.SerializerPath', CACHE . DS . 'htmlpurifier'); 
     300                        $purifier = new HTMLPurifier($config); 
     301 
     302                        $desc_html = Markdown($this->data['Request']['description']); 
     303                        $this->data['Request']['description_html'] = $purifier->purify($desc_html); 
     304                } 
     305 
     306                return true; 
     307        } 
    287308} 
    288309 
  • branches/gallery/server/www/app/views/requests/edit.ctp

    r251 r252  
    11<?php 
    2         if ($request['Request']['state'] == Request::STATE_SCAN_QUEUED || $request['Request']['state'] == Request::STATE_QUEUED) { 
    3                 $html->meta(null, null, array( 'http-equiv' => 'refresh', 'content' => Configure::read('Request.meta_refresh')), false); 
    4         } 
     2        $html->css('wmd', null, array(), false); 
     3        $javascript->link('showdown', false); 
     4        $javascript->link('wmd', false); 
    55?> 
     6 
    67<div class="requests view"> 
    78<h2><?php printf(__('Filename "%s"', true), $request['Request']['filename']);?></h2> 
     
    2728                        &nbsp; 
    2829                </dd> 
    29                 <dt<?php if ($i % 2 == 0) echo $class;?>><?php __('Actions'); ?></dt> 
    30                 <dd<?php if ($i++ % 2 == 0) echo $class;?>> 
    31                         <?php 
    32                                 if ($request['Request']['state'] == Request::STATE_SCAN_FOUND) { 
    33                                         echo $html->link( 
    34                                                 __('Download all results', true), 
    35                                                 array('action' => 'download', $request['Request']['id']), 
    36                                                 array(), 
    37                                                 sprintf(__('This document contains the "%s" virus. Are you sure?', true), $request['Request']['state_info']) 
    38                                         ); 
    39                                 } else { 
    40                                         echo $html->link(__('Download all results', true), array('action' => 'download', $request['Request']['id'])); 
    41                                 } 
    42                         ?> 
    43                         &nbsp; 
    44                 </dd> 
    4530        </dl> 
    4631</div> 
    4732 
    48 <?php if (!empty($request['Job'])):?> 
    49 <div class="related"> 
    50         <h3><?php __('Results');?></h3> 
    51         <?php foreach ($request['Job'] as $job): ?> 
    52                 <div style="width: 200px; height: 250px; float: left; text-align: center; border: 1px solid #ccc; margin-right: 1em;"> 
    53                         <?php echo $jobModel->getIcon($job, $request['Request']['state']); ?><br /> 
    54                         <?php echo $jobModel->getDescription($job, $request['Request']['state']); ?><br /> 
    55                         <p> 
    56                                 <?php echo $job['Application']['name'] . ' ' . $job['version'];?> 
    57                                 (<?php echo $job['Platform']['name'];?>) 
    58                         </p> 
    59                         <?php if (!empty($job['Result']) && $canDeleteResults) { 
    60                                 echo '<p>' . $html->link(__('Delete', true), array('controller' => 'results', 'action' => 'delete', $job['Result']['id'])) . '</p>'; 
    61                         }?> 
    62                 </div> 
    63         <?php endforeach; ?> 
    64 </div> 
    65 <?php endif; ?> 
     33<form method="post" action="/requests/edit/<?php echo $request['Request']['id'];?>"> 
     34        <h3><?php __('Description');?></h3> 
     35        <div id="wmd-button-bar"></div> 
     36        <textarea id="wmd-input" name="data[Request][description]"><?php echo h($request['Request']['description']);?></textarea> 
     37        <div id="wmd-preview" class="polaroid"></div> 
     38<?php echo $form->end(__('Save', true));?> 
     39         
  • branches/gallery/server/www/app/views/requests/view.ctp

    r205 r252  
    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'])):?> 
  • branches/gallery/server/www/app/webroot/css/cake.generic.css

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

    r250 r252  
    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.