source: trunk/server/www/app/views/requests/add.ctp @ 185

Last change on this file since 185 was 185, checked in by sander, 11 years ago

Turn requests into a finite state machine and add a cron shell

File size: 7.1 KB
Line 
1<script type="text/javascript">
2        $(function() {
3                sets = <?php echo $javascript->object($sets);?>;
4                set_ext = sets['all'];
5                set_output = sets['all'];
6
7                update_apps = function() {
8                        set_active = $.richArray.intersect(set_ext, set_output);
9                        $('#applications input[type=checkbox]').each(function(i) {
10                                if (jQuery.inArray(this.id, set_active) > -1) {
11                                        $(this).removeAttr('disabled');
12                                        $('label[for=' + this.id + ']').toggleClass('disabled', false);
13                                } else {
14                                        $(this).removeAttr('checked').attr('disabled', 'disabled');
15                                        $('label[for=' + this.id + ']').toggleClass('disabled', true);
16                                }
17                        });
18                }
19
20                select_apps = function(type) {
21                        switch (type) {
22                        case 'all':
23                        case 'latest':
24                        case 'development':
25                                set_apps = sets[type];
26                                break;
27                        case 'none':
28                                set_apps = [];
29                                break;
30                        default:
31                                set_apps = sets['platform'][type];
32                                break;
33                        }
34                       
35                        $('#applications input[type=checkbox]:enabled').each(function(i) {
36                                if ($.inArray(this.id, set_apps) > -1) {
37                                        $(this).attr('checked', 'checked');
38                                } else {
39                                        $(this).removeAttr('checked');
40                                }
41                        });
42                }
43
44                $('#applications').accordion({
45                        header: 'h3',
46                        autoHeight: true
47                });
48
49                $('#RequestFileUpload').change(function() {
50                        ext = $('#RequestFileUpload').val();
51                        ext = ext.substr(ext.lastIndexOf('.') + 1);
52
53                        if (ext == '') {
54                                set_ext = sets['all'];
55                        } else {
56                                $('#applications').accordion('activate', 'h3.' + ext);
57                                set_ext = sets['extension'][ext];
58                        }
59
60                        update_apps();
61                });
62
63                $("input[type=radio]").click(function() {
64                        var id = $("input[type=radio]:checked").val();
65
66                        if (id == '') {
67                                set_output = sets['all'];
68                        } else {
69                                set_output = sets['format'][id];
70                        }
71
72                        update_apps();
73                });
74
75                select_apps('latest');
76        });
77</script>
78
79<div class="requests form">
80<?php
81        $javascript->link('jquery-1.3.2.min.js', false);
82        $javascript->link('jquery-ui-accordion-1.6rc6.min.js', false);
83        $javascript->link('jquery.rich-array-min.js', false);
84        echo $form->create('Request', array('type' => 'file'));
85?>
86        <fieldset style="width: 28%; float: right; margin-top: 0;">
87                <legend><?php __('About');?></legend>
88                <?php __('These days many excellent office products compete for your attention, thanks to the rise of vendor neutral file formats like ODF.');?>
89                <?php __('Officeshots.org is a place where you can upload your own Office documents to see how they work in different software products.');?>
90                <p><a href="/pages/about"><?php __('Read more');?></a></p>
91        </fieldset>
92        <fieldset style="width: 60%;">
93                <legend><?php __('Add Request');?></legend>
94                <?php
95                        if ($can_submit_requests) {
96                                echo $form->file('Request.FileUpload');
97                        } else {
98                                __('Officeshots is in closed beta. You need to <a href="/users/login">login</a> or <a href="/users/register">register</a> before you can upload documents.');
99                                echo $form->file('Request.FileUpload', array('disabled' => true));
100                        }
101                ?>
102                <div class="input radio" id="RequestFormatId">
103                        <label><?php __('Output format:'); ?></label>
104                        <ul id="RequestFormatIdList">
105                                <li>
106                                <input type="radio" name="data[Request][format_id]" id="RequestFormatIdNone" value="" checked="checked" />
107                                <label for="RequestFormatIdNone"><?php __('Does not matter'); ?></label>
108                                </li>
109                        <?php
110                                foreach ($formats as $id => $name) {
111                                        echo '<li><input type="radio" name="data[Request][format_id]" id="RequestFormatId' . $id . '" value="' . $id . '" />';
112                                        echo ' <label for="RequestFormatId' . $id . '">' . $name . '</label></li>';
113                                }
114                        ?>
115                        </ul>
116                </div>
117                <?php
118                        if ($can_have_factories) {
119                                echo $form->input('own_factory', array('label' => __('Only use my own factories to process this request.', true)));
120                        }
121                ?>
122        </fieldset>
123        <fieldset id="applications" style="border: 1px solid #ccc; clear: right;">
124                <legend><?php __('Choose applications'); ?></legend>
125
126                <span>
127                        <?php __('Select:')?> <a href="javascript:select_apps('all')"><?php __('All');?></a> -
128                        <a href="javascript:select_apps('none')"><?php __('None');?></a> -
129                        <a href="javascript:select_apps('latest')"><?php __('Latest');?></a> -
130                        <a href="javascript:select_apps('development')"><?php __('Upcoming');?></a>
131                        <?php foreach ($platforms as $platform): ?>
132                                - <a href="javascript:select_apps('<?php echo $platform['Platform']['id'];?>')"><?php echo $platform['Platform']['name'];?></a>
133                        <?php endforeach; ?>
134                </span>
135        <?php foreach ($doctypes as $doctype): ?>
136        <div style="margin: 0; padding: 0;">
137                <h3 style="padding-top: 0.5em; cursor: pointer;" class="<?php echo implode(' ', Set::extract('/Mimetype[doctype_id='.$doctype['Doctype']['id'].']/extension', $mimetypes)); ?>">
138                        <?php echo $doctype['Doctype']['name'];?>
139                </h3>
140                <div style="margin-bottom: 0;">
141                <table>
142                        <tr>
143                                <?php
144                                $width = (int) 100 / sizeof($platforms);
145                                foreach ($platforms as $platform) {
146                                        echo '<th style="width: '.$width.'%">' . $platform['Platform']['name'] . '</th>';
147                                }
148                                ?>
149                        </tr>
150                        <tr>
151                                <?php foreach ($platforms as $platform): ?>
152                                <td>
153                                        <?php
154                                                foreach($workers as $worker) {
155                                                        if ($worker['Doctype']['code'] == $doctype['Doctype']['code'] && $worker['Platform']['name'] == $platform['Platform']['name']) {
156                                                                echo "\n" . '<input type="checkbox" name="data[Request][App][]" id="' . $worker['short_id'] . '" value="' . $worker['id'] . '" />'
157                                                                        . "\n" . '<label for="' . $worker['short_id'] . '">'
158                                                                        . $worker['Application']['name'] . ' '
159                                                                        . $worker['Worker']['version']
160                                                                        . "</label>\n";
161                                                        }
162                                                }
163                                        ?>
164                                </td>
165                                <?php endforeach;?>
166                        </tr>
167                </table>
168                </div>
169        </div>
170        <?php endforeach; ?>
171        </fieldset>
172        <?php
173                if ($can_submit_requests) {
174                        echo $form->end(__('Submit', true));
175                } else {
176                        echo $form->end(array('label' => __('Submit', true), 'disabled' => true));
177                }
178        ?>
179</div>
180
181<p><?php __('You want to try which Office software is any good for you or your organisation? It&#8217;s very easy. Five steps:');?></p>
182<ol>
183        <li><?php __('Submit a document that contains features you typically require.');?></li>
184        <li><?php __('Take a pick from the supported word processors, spreadsheet and presentation packages.');?></li>
185        <li><?php __('Select what you would like to see: PDF exports, screen output or ODF roundtrips.');?></li>
186        <li><?php __('Wait a bit while we work our magic...');?></li>
187        <li><?php __('Grab the results and compare them!');?></li>
188</ol>
189
190<p><?php __('Disclaimer:');?></p>
191<ul>
192        <li><?php __('Do not submit confidential documents. We don&#8217;t publish them, but there is no protection in the cloud.');?></li>
193        <li><?php __('If you get strange results, check if your input document is technically sound through <a href="http://tools.odftoolkit.org/odfvalidator">The ODF Validator</a>.');?></li>
194        <li><?php __('If you use your own fonts, you may be unpleasantly surprised to find out that office files don&#8217;t carry any font information. So your beautifully styled pages with hand written fonts have always looked that bad when other people opened them.');?></li>
195        <li><?php __('Don&#8217;t forget that the quality of your input document matters! It might be that your current software supplier has an immature implementation of ODF.');?></li>
196</ul>
197
198<br /><br /><img src="/img/thanks.png" id="sponsors" />
Note: See TracBrowser for help on using the repository browser.