Mercurial > p > roundup > code
annotate website/issues/html/issue.item.html @ 8356:63390dcfcfe9
bug: fix template use of structure with untrusted data
Looks like an xSS bug with an early version of the template that was
fixed in the code but never in the deployed tracker. It has been a
while since this particular construct has been in the classic template
which is the base for the tracker.
This has been fixed on the deployed tracker as well.
reported by 4bug of ChaMd5 Security Team H1 Group
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 08 Jul 2025 10:23:09 -0400 |
| parents | 12c5ddf865b1 |
| children | abf1297e7a94 |
| rev | line source |
|---|---|
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
1 <tal:block metal:use-macro="templates/page/macros/icing"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
2 <title metal:fill-slot="head_title"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
3 <tal:block condition="context/id" i18n:translate="" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
4 >Issue <span tal:replace="context/id" i18n:name="id" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
5 />: <span tal:replace="context/title" i18n:name="title" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
6 /> - <span tal:replace="config/TRACKER_NAME" i18n:name="tracker" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
7 /></tal:block> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
8 <tal:block condition="not:context/id" i18n:translate="" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
9 >New Issue - <span tal:replace="config/TRACKER_NAME" i18n:name="tracker" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
10 /></tal:block> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
11 </title> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
12 <tal:block metal:fill-slot="body_title"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
13 <span tal:condition="python: not (context.id or context.is_edit_ok())" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
14 tal:omit-tag="python:1" i18n:translate="">New Issue</span> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
15 <span tal:condition="python: not context.id and context.is_edit_ok()" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
16 tal:omit-tag="python:1" i18n:translate="">New Issue Editing</span> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
17 <span tal:condition="python: context.id and not context.is_edit_ok()" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
18 tal:omit-tag="python:1" i18n:translate="">Issue <tal:x |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
19 replace="context/id" i18n:name="id" /></span> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
20 <span tal:condition="python: context.id and context.is_edit_ok()" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
21 tal:omit-tag="python:1" i18n:translate="">Issue<tal:x |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
22 replace="context/id" i18n:name="id" /> Editing</span> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
23 </tal:block> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
24 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
25 <td class="content" metal:fill-slot="content"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
26 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
27 <p tal:condition="python:not (context.is_view_ok() |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
28 or request.user.hasRole('Anonymous'))" i18n:translate=""> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
29 You are not allowed to view this page.</p> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
30 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
31 <p tal:condition="python:not context.is_view_ok() |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
32 and request.user.hasRole('Anonymous')" i18n:translate=""> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
33 Please login with your username and password.</p> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
34 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
35 <div tal:condition="context/is_view_ok"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
36 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
37 <form method="POST" name="itemSynopsis" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
38 onSubmit="return submit_once()" enctype="multipart/form-data" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
39 tal:attributes="action context/designator"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
40 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
41 <fieldset><legend>classification</legend> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
42 <table class="form"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
43 <tr> |
|
6306
871dc7904d7a
Add labels for some inputs on issue.item.
John Rouillard <rouilj@ieee.org>
parents:
4644
diff
changeset
|
44 <th class="required"><label for="title" i18n:translate="">Title:</label></th> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
45 <td colspan="3" tal:condition="context/title/is_edit_ok" |
| 6307 | 46 tal:content="structure python:context.title.field(id='title', size=60)">title</td> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
47 <td colspan="3" tal:condition="not:context/title/is_edit_ok"> |
|
8356
63390dcfcfe9
bug: fix template use of structure with untrusted data
John Rouillard <rouilj@ieee.org>
parents:
6683
diff
changeset
|
48 <span tal:content="context/title/plain"/> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
49 <input type="hidden" name="title" tal:attributes="value context/title"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
50 </td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
51 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
52 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
53 <tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
54 <th class="required" i18n:translate=""> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
55 <span tal:replace="structure python:db.issue_type.classhelp('id,name,description',label='Type')" />: |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
56 </th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
57 <td tal:content="structure context/type/menu">type</td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
58 <th i18n:translate=""> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
59 <span tal:replace="structure python:db.severity.classhelp('id,name,description',label='Severity')" />: |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
60 </th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
61 <td tal:content="structure context/severity/menu">components</td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
62 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
63 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
64 <tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
65 <th i18n:translate=""> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
66 <span tal:replace="structure python:db.component.classhelp('id,name,description',label='Components')" />: |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
67 </th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
68 <td tal:content="structure context/components/menu">components</td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
69 <th i18n:translate=""> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
70 <span tal:replace="structure python:db.version.classhelp('id,name,description',label='Versions')" />: |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
71 </th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
72 <td tal:content="structure context/versions/menu">versions</td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
73 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
74 </table> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
75 </fieldset> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
76 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
77 <fieldset><legend>process</legend> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
78 <table class="form"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
79 <tr tal:condition="context/id"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
80 <th i18n:translate=""> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
81 <span tal:replace="structure python:db.status.classhelp('id,name,description',label='Status')" />: |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
82 </th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
83 <td tal:content="structure context/status/menu">status</td> |
|
6306
871dc7904d7a
Add labels for some inputs on issue.item.
John Rouillard <rouilj@ieee.org>
parents:
4644
diff
changeset
|
84 <th><label for="resolution" i18n:translate="">Resolution:</label></th> |
| 6307 | 85 <td tal:content="structure python:context.resolution.menu(html_kwargs={'id':'resolution'})">resolution</td> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
86 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
87 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
88 <tr tal:condition="context/id"> |
|
6306
871dc7904d7a
Add labels for some inputs on issue.item.
John Rouillard <rouilj@ieee.org>
parents:
4644
diff
changeset
|
89 <th> <label for="dependencies" i18n:translate="">Dependencies</label> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
90 <span tal:condition="context/dependencies/is_edit_ok" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
91 tal:replace="structure python:db.issue.classhelp('id,title', filter='status=0,1', property='dependencies')" /> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
92 </th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
93 <td> |
| 6307 | 94 <span tal:replace="structure python:context.dependencies.field(id='dependencies',showid=1,size=20)" /> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
95 <span tal:condition="context/dependencies" tal:repeat="d python:context.dependencies.sorted('creation')"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
96 <br/>View: <a tal:attributes="href string:issue${d/id}" tal:content="d/id"></a> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
97 </span> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
98 </td> |
|
6306
871dc7904d7a
Add labels for some inputs on issue.item.
John Rouillard <rouilj@ieee.org>
parents:
4644
diff
changeset
|
99 <th> |
|
871dc7904d7a
Add labels for some inputs on issue.item.
John Rouillard <rouilj@ieee.org>
parents:
4644
diff
changeset
|
100 <tal:block><label for="superseder" i18n:translate="">Superseder</label></tal:block>: |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
101 <span tal:condition="context/superseder/is_edit_ok" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
102 tal:replace="structure python:db.issue.classhelp('id,title', filter='status=0,1', property='superseder')" /> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
103 </th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
104 <td> |
| 6307 | 105 <span tal:replace="structure python:context.superseder.field(id='superseder', showid=1, size=20)" /> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
106 <span tal:condition="context/superseder"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
107 <!-- <br><span i18n:translate="">View</span>: |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
108 <a tal:repeat="sup context/superseder" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
109 tal:content="python:sup['id'] + ', '*(not repeat['sup'].end)" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
110 tal:attributes="href string:issue${sup/id}; title sup/title;"></a> --> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
111 <br><span i18n:translate="">View</span>: |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
112 <a tal:content="context/superseder/id" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
113 tal:attributes="href string:issue${context/superseder/id}; title context/superseder/title;"></a> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
114 </span> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
115 </td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
116 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
117 <tr> |
|
6306
871dc7904d7a
Add labels for some inputs on issue.item.
John Rouillard <rouilj@ieee.org>
parents:
4644
diff
changeset
|
118 <th><label for="assignee" i18n:translate="">Assigned To</label>:</th> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
119 <td tal:condition="context/status/is_edit_ok"> |
| 6307 | 120 <select id="assignee" name="assignee"> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
121 <option value="-1">nobody</option> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
122 <tal:block tal:repeat="userdata python:db._db.user.filter_sql('select id,_username from _user where _roles like \'%Developer%\' order by _username')"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
123 <option tal:attributes="value python:userdata[0]; |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
124 selected python:str(userdata[0]) == context.assignee._value" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
125 tal:content="python:userdata[1]"></option> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
126 </tal:block> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
127 </select> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
128 </td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
129 <td tal:condition="not:context/assignee/is_edit_ok"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
130 <span tal:replace="structure context/assignee/plain" /> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
131 </td> |
|
6306
871dc7904d7a
Add labels for some inputs on issue.item.
John Rouillard <rouilj@ieee.org>
parents:
4644
diff
changeset
|
132 <th><label for="nosy" i18n:translate="">Nosy List</label>: |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
133 <span tal:condition="context/nosy/is_edit_ok" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
134 tal:replace="structure python:db.user.classhelp('username,realname,address', property='nosy')" /> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
135 </th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
136 <td> |
| 6307 | 137 <span tal:replace="structure python:context.nosy.field(id='nosy')" /> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
138 </td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
139 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
140 <tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
141 <th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
142 <span tal:replace="structure python:db.priority.classhelp('id,name,description',label='Priority')" />: |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
143 </th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
144 <td tal:content="structure context/priority/menu">priority</td> |
| 6307 | 145 <th><label for="keywords" i18n:translate="">Keywords</label>:</th> |
| 146 <td tal:content="structure python:context['keywords'].menu(height=5,html_kwargs={'id': 'keywords'})">keywords</td> | |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
147 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
148 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
149 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
150 <tr tal:condition="context/is_edit_ok"> |
|
6306
871dc7904d7a
Add labels for some inputs on issue.item.
John Rouillard <rouilj@ieee.org>
parents:
4644
diff
changeset
|
151 <th><label for="@note" i18n:translate="">Comment</label>:</th> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
152 <td colspan="3"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
153 <textarea tal:content="request/form/@note/value | default" |
| 6307 | 154 id="@note" name="@note" wrap="hard" rows="10" cols="72"></textarea> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
155 </td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
156 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
157 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
158 <tr tal:condition="context/is_edit_ok"> |
|
6306
871dc7904d7a
Add labels for some inputs on issue.item.
John Rouillard <rouilj@ieee.org>
parents:
4644
diff
changeset
|
159 <th><label for="file-1@content" i18n:translate="">File</label>:</th> |
|
6454
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
160 <td> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
161 <input type="hidden" name="@link@files" value="file-1"> |
| 6307 | 162 <input type="file" id="file-1@content" name="file-1@content" size="40"> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
163 </td> |
|
6454
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
164 <th><label for="file-1@description" i18n:translate="">File Description</label>:</th> |
|
6683
12c5ddf865b1
type-edit invalid change to type-text for file description.
John Rouillard <rouilj@ieee.org>
parents:
6507
diff
changeset
|
165 <td colspan=3><input type="text" class="fileDesc" id="file-1@description" name="file-1@description" size="40"></td> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
166 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
167 <tr tal:condition="context/is_edit_ok"> |
|
6454
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
168 <td colspan=4> |
|
6507
bc95f7431efb
Remove miscommited issue directory; AboutPage fix; aria for drag/drop
John Rouillard <rouilj@ieee.org>
parents:
6476
diff
changeset
|
169 <textarea readonly id="DropZone" aria-labeledby="DropZone"> |
|
6454
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
170 paste images or drag and drop files here.... |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
171 </textarea> |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
172 </td> |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
173 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
174 </table> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
175 </fieldset> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
176 <table class="form"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
177 <tr tal:condition="context/is_edit_ok"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
178 <td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
179 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
180 <input type="hidden" name="@template" value="item"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
181 <input type="hidden" name="@required" value="title"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
182 </td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
183 <td colspan=3> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
184 <span tal:replace="structure context/submit">submit button</span> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
185 <a tal:condition="context/id" tal:attributes="href context/copy_url" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
186 i18n:translate="">Make a copy</a> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
187 </td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
188 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
189 </table> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
190 </form> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
191 |
|
6454
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
192 <!-- drag and drop code --> |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
193 <script tal:attributes="nonce request/client/client_nonce"> |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
194 /* multiple file drops cause issues with redefined |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
195 file-X@content issues. input multiple assumes |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
196 it can start numbering from 1 for each of the |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
197 multiple files. However numbering here does the |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
198 same leading to duplicate file-2@content. |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
199 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
200 layout needs some work, alignnment of new file |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
201 input's isn't great. |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
202 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
203 Need a way to delete or reset file inputs so file |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
204 assigned to them isn't uploaded. Clicking on button |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
205 in chrome and then canceling unsets the file. But this |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
206 sequence does nothing in firefox. |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
207 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
208 Pasting always uses image.<type> can't name file. |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
209 Need to query user during paste for name/description. |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
210 */ |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
211 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
212 let newInput=null; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
213 let NextInputNum = 100; /* file input 1 is hardcoded in form. |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
214 It is a multiple file input control. To |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
215 prevent collision, we start dynamic file controls at |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
216 file-100@content. 100 is larger than we expect |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
217 the number of files uploaded using file input 1.*/ |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
218 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
219 let target = document.getElementById('DropZone'); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
220 target.style.display = "block"; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
221 let body = document.body; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
222 let fileInput = document.getElementById('file-1@content'); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
223 let fileDesc = document.getElementById('file-1@description'); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
224 |
|
6474
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
225 function make_clear_fileInput_closure(input) { |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
226 return function(ev) { input.value = ""; |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
227 ev.preventDefault();} |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
228 } |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
229 |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
230 |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
231 function make_new_clear_button() { |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
232 newClearInput=document.createElement('button'); |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
233 newClearInput.textContent = "X"; |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
234 newClearInput.setAttribute("aria-label", |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
235 "Clear next file input."); |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
236 newClearInput.setAttribute("title", |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
237 "Clear next file input."); |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
238 newClearInput.classList.add("clearButton"); |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
239 return newClearInput; |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
240 } |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
241 |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
242 function make_new_file_input() { |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
243 newInput=document.createElement('input'); |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
244 newInput.type="file"; |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
245 newInput.id="file-" + NextInputNum +"@content"; |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
246 newInput.name=newInput.id; |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
247 return newInput; |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
248 } |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
249 |
|
6454
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
250 function add_file_input () { |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
251 // Only allow one change listener on newest input. |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
252 fileInput.removeEventListener('change', |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
253 add_file_input, |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
254 false); |
|
6474
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
255 newClearInput = fileInput.insertAdjacentElement( |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
256 'beforebegin', |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
257 make_new_clear_button()); |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
258 |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
259 // add change handler to file clear button |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
260 newClearInput.addEventListener('click', |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
261 make_clear_fileInput_closure(fileInput), |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
262 false); |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
263 |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
264 /* Insert break so next input is on new line */ |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
265 br = fileInput.insertAdjacentElement('afterend', |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
266 document.createElement('br')); |
|
6454
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
267 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
268 /* create new file input to get next dragged file */ |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
269 /* <input type="file" name="file-2@content"> for 2, |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
270 3, 4, ... */ |
|
6474
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
271 fileInput = br.insertAdjacentElement('afterend', |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
272 make_new_file_input()); |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
273 |
|
6454
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
274 // add change hander to newest file input |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
275 fileInput.addEventListener('change', |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
276 add_file_input, // create new input for more files |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
277 false); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
278 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
279 /* link file-N to list of files on issue. |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
280 also link to msg-1 */ |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
281 addLink=document.createElement('input'); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
282 addLink.type="hidden"; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
283 addLink.id="@link@file=file-" + NextInputNum; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
284 addLink.name="@link@files" |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
285 addLink.value="file-" + NextInputNum; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
286 fileInput.insertAdjacentElement('afterend', addLink); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
287 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
288 addLink=document.createElement('input'); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
289 addLink.type="hidden"; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
290 addLink.id="msg-1@link@files=file-" + NextInputNum; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
291 addLink.name="msg-1@link@files" |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
292 addLink.value="file-" + NextInputNum |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
293 fileInput.insertAdjacentElement('afterend', addLink); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
294 |
|
6474
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
295 /* break line before description field to prevent |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
296 wrapping multiple descriptions onto one line when |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
297 zoomed out or large display.*/ |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
298 br = fileDesc.insertAdjacentElement('afterend', |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
299 document.createElement('br')); |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
300 fileDesc=document.createElement('input'); |
|
6683
12c5ddf865b1
type-edit invalid change to type-text for file description.
John Rouillard <rouilj@ieee.org>
parents:
6507
diff
changeset
|
301 fileDesc.type="text"; |
|
6474
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
302 fileDesc.id="file-" + NextInputNum + "@description"; |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
303 fileDesc.name=fileDesc.id |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
304 fileDesc.size = 40 |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
305 fileDesc.classList.add("fileDesc"); |
|
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
306 fileDesc=br.insertAdjacentElement('afterend', fileDesc); |
|
6454
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
307 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
308 NextInputNum = NextInputNum+1; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
309 } |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
310 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
311 function MarkDropZone(e, active) { |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
312 active == true ? e.style.backgroundColor = "goldenrod" : |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
313 e.style.backgroundColor = ""; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
314 } |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
315 fileInput.addEventListener('change', |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
316 add_file_input, // create new input for more files |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
317 false); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
318 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
319 target.addEventListener('dragover', (e) => { |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
320 e.preventDefault(); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
321 body.classList.add('dragging'); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
322 }); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
323 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
324 target.addEventListener('dragenter', (e) => { |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
325 e.preventDefault(); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
326 MarkDropZone(target, true); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
327 }); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
328 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
329 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
330 target.addEventListener('dragleave', (e) => { |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
331 e.preventDefault(); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
332 MarkDropZone(target, false); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
333 }); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
334 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
335 target.addEventListener('dragleave', () => { |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
336 body.classList.remove('dragging'); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
337 }); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
338 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
339 target.addEventListener('drop', (e) => { |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
340 body.classList.remove('dragging'); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
341 MarkDropZone(target, false); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
342 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
343 // Only allow single file drop unless |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
344 // fileInput name is @file that can support |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
345 // multiple file drop and file drop is multiple. |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
346 if (( fileInput.name != "@file" || |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
347 ! fileInput.hasAttribute('multiple')) && |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
348 e.dataTransfer.files.length != 1 ) { |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
349 alert("File input can only accept one file.") |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
350 e.preventDefault(); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
351 return |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
352 } |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
353 // set file input files to the dragged files |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
354 fileInput.files = e.dataTransfer.files; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
355 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
356 add_file_input(); // create new input for more files |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
357 // run last otherwise firefox empties e.dataTransfer |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
358 e.preventDefault(); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
359 }); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
360 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
361 target.addEventListener('mouseover', (e) => { |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
362 e.preventDefault(); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
363 MarkDropZone(target, true); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
364 }); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
365 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
366 target.addEventListener('mouseout', (e) => { |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
367 e.preventDefault(); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
368 MarkDropZone(target, false); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
369 }); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
370 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
371 target.addEventListener('paste', (event) => { |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
372 // https://mobiarch.wordpress.com/2013/09/25/upload-image-by-copy-and-paste/ |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
373 // add paste event listener to the page |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
374 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
375 // https://stackoverflow.com/questions/50427513/ |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
376 // html-paste-clipboard-image-to-file-input |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
377 if ( event.clipboardData.files.length == 0) { |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
378 // if not file data alert |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
379 alert("No image found for pasting"); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
380 event.preventDefault(); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
381 return; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
382 } |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
383 fileInput.files = event.clipboardData.files; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
384 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
385 /* Possible enhancement if file check fails. |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
386 iterate over all items 0 ...: |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
387 event.clipboardData.items.length |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
388 look at all items[i].kind for 'string' and |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
389 items[i].type looking for a text/plain item. If |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
390 found, |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
391 event.clipboardData.items[1].getAsString( |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
392 callback_fcn(s)) |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
393 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
394 where callback function that creates a new |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
395 dataTransfer object with a file and insert the |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
396 content s and assigns it to the input. |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
397 |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
398 https://gist.github.com/guest271314/7eac2c21911f5e40f489\33ac78e518bd |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
399 */ |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
400 add_file_input(); // create new input for more files |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
401 // do not paste contents to dropzone |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
402 event.preventDefault(); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
403 }, false); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
404 </script> |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
405 <style tal:attributes="nonce request/client/client_nonce"> |
|
6474
a2c340261290
Add button to clear file input.
John Rouillard <rouilj@ieee.org>
parents:
6454
diff
changeset
|
406 #FileArea button.clearButton ~ input[type=file] {display:inline-block;} |
|
6454
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
407 #DropZone { /* don't display dropzone by default. |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
408 Displayed as block by javascript. */ |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
409 display:none; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
410 width: 100%; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
411 /* override textarea inset */ |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
412 border-style: dashed; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
413 padding: 3ex 0; /* larger dropzone */ |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
414 /* add space below inputs */ |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
415 margin-block-start: 1em; |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
416 /* lighter color */ |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
417 background: rgba(255,255,255,0.4); |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
418 } |
|
6476
10a8a6bc4667
Change spacing for file addition; larger comment block; top label
John Rouillard <rouilj@ieee.org>
parents:
6474
diff
changeset
|
419 input[id$=\@content], input.fileDesc {margin-block-end: 0.5em} |
|
6454
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
420 </style> |
|
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
421 |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
422 <p tal:condition="context/id" i18n:translate=""> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
423 Created on <b><tal:x replace="python:context.creation.pretty('%Y-%m-%d %H:%M')" i18n:name="creation" /></b> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
424 by <b><tal:x replace="context/creator" i18n:name="creator" /></b>, |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
425 last changed <b><tal:x replace="python:context.activity.pretty('%Y-%m-%d %H:%M')" i18n:name="activity" /></b> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
426 by <b><tal:x replace="context/actor" i18n:name="actor" /></b>. |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
427 </p> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
428 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
429 <table class="files" tal:condition="context/files"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
430 <tr><th colspan="5" class="header" i18n:translate="">Files</th></tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
431 <tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
432 <th i18n:translate="">File name</th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
433 <th i18n:translate="">Uploaded</th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
434 <th i18n:translate="">Description</th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
435 <th i18n:translate="">Edit</th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
436 <th i18n:translate="">Remove</th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
437 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
438 <tr tal:repeat="file python:context.files.sorted('creation')"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
439 <td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
440 <a tal:attributes="href file/download_url" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
441 tal:content="file/name">dld link</a> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
442 </td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
443 <td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
444 <span tal:content="file/creator">creator's name</span>, |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
445 <span tal:content="python:file.creation.pretty('%Y-%m-%d %H:%M')">creation date</span> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
446 </td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
447 <td tal:content="file/description" /> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
448 <td><a tal:condition="file/is_edit_ok" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
449 tal:attributes="href string:file${file/id}">edit</a> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
450 </td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
451 <td> |
|
4644
20e0e5ce217f
Tracker: Following upgrading docs for the "retire" and "remove" buttons.
Bernhard Reiter <bernhard@intevation.de>
parents:
4024
diff
changeset
|
452 <form style="padding:0" method="POST" tal:condition="file/is_edit_ok" |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
453 tal:attributes="action string:issue${context/id}"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
454 <input type="hidden" name="@remove@files" tal:attributes="value file/id"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
455 <input type="hidden" name="@action" value="edit"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
456 <input type="submit" value="remove" i18n:attributes="value"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
457 </form> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
458 </td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
459 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
460 </table> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
461 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
462 <table class="messages" tal:condition="context/messages"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
463 <tr><th colspan="4" class="header" i18n:translate="">Messages</th></tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
464 <tal:block tal:repeat="msg context/messages"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
465 <tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
466 <th><a tal:attributes="href string:msg${msg/id}" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
467 i18n:translate="">msg<tal:x replace="msg/id" i18n:name="id" /></a></th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
468 <th i18n:translate="">Author: <tal:x replace="python:msg.author.realname.plain()" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
469 i18n:name="author" /> (<tal:x replace="msg/author"/>)</th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
470 <th i18n:translate="">Date: <tal:x replace="python:msg.date.pretty('%Y-%m-%d %H:%M')" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
471 i18n:name="date" /></th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
472 <th> |
|
4644
20e0e5ce217f
Tracker: Following upgrading docs for the "retire" and "remove" buttons.
Bernhard Reiter <bernhard@intevation.de>
parents:
4024
diff
changeset
|
473 <form style="padding:0" method="POST" tal:condition="msg/is_edit_ok" |
|
4024
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
474 tal:attributes="action string:issue${context/id}"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
475 <input type="hidden" name="@remove@messages" tal:attributes="value msg/id"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
476 <input type="hidden" name="@action" value="edit"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
477 <input type="submit" value="remove" i18n:attributes="value"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
478 </form> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
479 </th> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
480 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
481 <tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
482 <td colspan="4" class="content"> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
483 <pre tal:condition="python:msg.content.is_view_ok()" |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
484 tal:content="structure python:utils.localReplace(msg.content.hyperlinked())">content</pre> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
485 </td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
486 </tr> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
487 </tal:block> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
488 </table> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
489 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
490 <tal:block tal:condition="context/id" tal:replace="structure context/history" /> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
491 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
492 </div> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
493 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
494 </td> |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
495 |
|
c2d0d3e9099d
svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff
changeset
|
496 </tal:block> |
|
6454
83b67f65b8ff
Implement file upload by drag and drop and paste. Table formatting
John Rouillard <rouilj@ieee.org>
parents:
6307
diff
changeset
|
497 <!-- SHA: ad841842c0da5f9d1a7f69a1e0c847a549b75bf2 --> |
