Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Side by Side Diff: net/base/dir_header.html

Issue 2792533003: Separate the parent directory link in FTP listings. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/child/ftp_directory_listing_response_delegate.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 2
3 <html i18n-values="dir:textdirection;lang:language"> 3 <html i18n-values="dir:textdirection;lang:language">
4 4
5 <head> 5 <head>
6 <meta charset="utf-8"> 6 <meta charset="utf-8">
7 <meta name="google" value="notranslate"> 7 <meta name="google" value="notranslate">
8 8
9 <script> 9 <script>
10 function addRow(name, url, isdir, 10 function addRow(name, url, isdir,
11 size, size_string, date_modified, date_modified_string) { 11 size, size_string, date_modified, date_modified_string) {
12 if (name == ".") 12 if (name == "." || name == "..")
13 return; 13 return;
14 14
15 var root = document.location.pathname; 15 var root = document.location.pathname;
16 if (root.substr(-1) !== "/") 16 if (root.substr(-1) !== "/")
17 root += "/"; 17 root += "/";
18 18
19 var tbody = document.getElementById("tbody"); 19 var tbody = document.getElementById("tbody");
20 var row = document.createElement("tr"); 20 var row = document.createElement("tr");
21 var file_cell = document.createElement("td"); 21 var file_cell = document.createElement("td");
22 var link = document.createElement("a"); 22 var link = document.createElement("a");
23 23
24 link.className = isdir ? "icon dir" : "icon file"; 24 link.className = isdir ? "icon dir" : "icon file";
25 25
26 if (name == "..") { 26 if (isdir) {
27 link.href = root + ".."; 27 name = name + "/";
28 link.innerText = document.getElementById("parentDirText").innerText; 28 url = url + "/";
29 link.className = "icon up";
30 size = 0; 29 size = 0;
31 size_string = ""; 30 size_string = "";
32 date_modified = 0;
33 date_modified_string = "";
34 } else { 31 } else {
35 if (isdir) { 32 link.draggable = "true";
36 name = name + "/"; 33 link.addEventListener("dragstart", onDragStart, false);
37 url = url + "/";
38 size = 0;
39 size_string = "";
40 } else {
41 link.draggable = "true";
42 link.addEventListener("dragstart", onDragStart, false);
43 }
44 link.innerText = name;
45 link.href = root + url;
46 } 34 }
35 link.innerText = name;
36 link.href = root + url;
37
47 file_cell.dataset.value = name; 38 file_cell.dataset.value = name;
48 file_cell.appendChild(link); 39 file_cell.appendChild(link);
49 40
50 row.appendChild(file_cell); 41 row.appendChild(file_cell);
51 row.appendChild(createCell(size, size_string)); 42 row.appendChild(createCell(size, size_string));
52 row.appendChild(createCell(date_modified, date_modified_string)); 43 row.appendChild(createCell(date_modified, date_modified_string));
53 44
54 tbody.appendChild(row); 45 tbody.appendChild(row);
55 } 46 }
56 47
(...skipping 13 matching lines...) Expand all
70 return cell; 61 return cell;
71 } 62 }
72 63
73 function start(location) { 64 function start(location) {
74 var header = document.getElementById("header"); 65 var header = document.getElementById("header");
75 header.innerText = header.innerText.replace("LOCATION", location); 66 header.innerText = header.innerText.replace("LOCATION", location);
76 67
77 document.getElementById("title").innerText = header.innerText; 68 document.getElementById("title").innerText = header.innerText;
78 } 69 }
79 70
71 function onHasParentDirectory() {
72 var box = document.getElementById("parentDirLinkBox");
73 box.style.display = "block";
74
75 var root = document.location.pathname;
76 if (root.substr(-1) !== "/")
eroman 2017/04/04 19:24:08 root.endsWith("/")
Lei Zhang 2017/04/18 05:53:11 Done, with a ! in front.
77 root += "/";
78
79 var link = document.getElementById("parentDirLink");
80 link.href = root + "..";
81 }
82
80 function onListingParsingError() { 83 function onListingParsingError() {
81 var box = document.getElementById("listingParsingErrorBox"); 84 var box = document.getElementById("listingParsingErrorBox");
82 box.innerHTML = box.innerHTML.replace("LOCATION", encodeURI(document.location) 85 box.innerHTML = box.innerHTML.replace("LOCATION", encodeURI(document.location)
83 + "?raw"); 86 + "?raw");
84 box.style.display = "block"; 87 box.style.display = "block";
85 } 88 }
86 89
87 function sortTable(column) { 90 function sortTable(column) {
88 var theader = document.getElementById("theader"); 91 var theader = document.getElementById("theader");
89 var oldOrder = theader.cells[column].dataset.order || '1'; 92 var oldOrder = theader.cells[column].dataset.order || '1';
(...skipping 11 matching lines...) Expand all
101 list.sort(function(row1, row2) { 104 list.sort(function(row1, row2) {
102 var a = row1.cells[column].dataset.value; 105 var a = row1.cells[column].dataset.value;
103 var b = row2.cells[column].dataset.value; 106 var b = row2.cells[column].dataset.value;
104 if (column) { 107 if (column) {
105 a = parseInt(a, 10); 108 a = parseInt(a, 10);
106 b = parseInt(b, 10); 109 b = parseInt(b, 10);
107 return a > b ? newOrder : a < b ? oldOrder : 0; 110 return a > b ? newOrder : a < b ? oldOrder : 0;
108 } 111 }
109 112
110 // Column 0 is text. 113 // Column 0 is text.
111 // Also the parent directory should always be sorted at one of the ends. 114 if (a > b)
112 if (b == ".." | a > b) {
113 return newOrder; 115 return newOrder;
114 } else if (a == ".." | a < b) { 116 if (a < b)
115 return oldOrder; 117 return oldOrder;
116 } else { 118 return 0;
117 return 0;
118 }
119 }); 119 });
120 120
121 // Appending an existing child again just moves it. 121 // Appending an existing child again just moves it.
122 for (i = 0; i < list.length; i++) { 122 for (i = 0; i < list.length; i++) {
123 tbody.appendChild(list[i]); 123 tbody.appendChild(list[i]);
124 } 124 }
125 } 125 }
126 </script> 126 </script>
127 127
128 <style> 128 <style>
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 } 166 }
167 167
168 a.up { 168 a.up {
169 background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYA AAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmlJREFUeNpsU0toU0EU PfPysx/tTxuDH9SCWhUDooIbd7oRUUTMouqi2iIoCO6lceHWhegy4EJFinWjrlQUpVm0IIoFpVDEIthm 0dpikpf3ZuZ6Z94nrXhhMjM3c8895977BBHB2PznK8WPtDgyWH5q77cPH8PpdXuhpQT4ifR9u5sfJb1b mw6VivahATDrxcRZ2njfoaMv+2j7mLDn93MPiNRMvGbL18L9IpF8h9/TN+EYkMffSiOXJ5+hkD+PdqcL pICWHOHc2CC+LEyA/K+cKQMnlQHJX8wqYG3MAJy88Wa4OLDvEqAEOpJd0LxHIMdHBziowSwVlF8D6Qai cK01krw/JynwcKoEwZczewroTvZirlKJs5CqQ5CG8pb57FnJUA0LYCXMX5fibd+p8LWDDemcPZbzQyjv H+Ki1TlIciElA7ghwLKV4kRZstt2sANWRjYTAGzuP2hXZFpJ/GsxgGJ0ox1aoFWsDXyyxqCs26+ydmag FN/rRjymJ1898bzGzmQE0HCZpmk5A0RFIv8Pn0WYPsiu6t/Rsj6PauVTwffTSzGAGZhUG2F06hEc9ibS 7OPMNp6ErYFlKavo7MkhmTqCxZ/jwzGA9Hx82H2BZSw1NTN9Gx8ycHkajU/7M+jInsDC7DiaEmo1bNl1 AMr9ASFgqVu9MCTIzoGUimXVAnnaN0PdBBDCCYbEtMk6wkpQwIG0sn0PQIUF4GsTwLSIFKNqF6DVrQq+ IWVrQDxAYQC/1SsYOI4pOxKZrfifiUSbDUisif7XlpGIPufXd/uvdvZm760M0no1FZcnrzUdjw7au3vu /BVgAFLXeuTxhTXVAAAAAElFTkSuQmCC ") left top no-repeat; 169 background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYA AAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmlJREFUeNpsU0toU0EU PfPysx/tTxuDH9SCWhUDooIbd7oRUUTMouqi2iIoCO6lceHWhegy4EJFinWjrlQUpVm0IIoFpVDEIthm 0dpikpf3ZuZ6Z94nrXhhMjM3c8895977BBHB2PznK8WPtDgyWH5q77cPH8PpdXuhpQT4ifR9u5sfJb1b mw6VivahATDrxcRZ2njfoaMv+2j7mLDn93MPiNRMvGbL18L9IpF8h9/TN+EYkMffSiOXJ5+hkD+PdqcL pICWHOHc2CC+LEyA/K+cKQMnlQHJX8wqYG3MAJy88Wa4OLDvEqAEOpJd0LxHIMdHBziowSwVlF8D6Qai cK01krw/JynwcKoEwZczewroTvZirlKJs5CqQ5CG8pb57FnJUA0LYCXMX5fibd+p8LWDDemcPZbzQyjv H+Ki1TlIciElA7ghwLKV4kRZstt2sANWRjYTAGzuP2hXZFpJ/GsxgGJ0ox1aoFWsDXyyxqCs26+ydmag FN/rRjymJ1898bzGzmQE0HCZpmk5A0RFIv8Pn0WYPsiu6t/Rsj6PauVTwffTSzGAGZhUG2F06hEc9ibS 7OPMNp6ErYFlKavo7MkhmTqCxZ/jwzGA9Hx82H2BZSw1NTN9Gx8ycHkajU/7M+jInsDC7DiaEmo1bNl1 AMr9ASFgqVu9MCTIzoGUimXVAnnaN0PdBBDCCYbEtMk6wkpQwIG0sn0PQIUF4GsTwLSIFKNqF6DVrQq+ IWVrQDxAYQC/1SsYOI4pOxKZrfifiUSbDUisif7XlpGIPufXd/uvdvZm760M0no1FZcnrzUdjw7au3vu /BVgAFLXeuTxhTXVAAAAAElFTkSuQmCC ") left top no-repeat;
170 } 170 }
171 171
172 html[dir=rtl] a { 172 html[dir=rtl] a {
173 background-position-x: right; 173 background-position-x: right;
174 } 174 }
175 175
176 #parentDirLinkBox {
177 margin-bottom: 10px;
178 padding-bottom: 10px;
179 }
180
176 #listingParsingErrorBox { 181 #listingParsingErrorBox {
177 border: 1px solid black; 182 border: 1px solid black;
178 background: #fae691; 183 background: #fae691;
179 padding: 10px; 184 padding: 10px;
180 display: none; 185 display: none;
181 } 186 }
182 </style> 187 </style>
183 188
184 <title id="title"></title> 189 <title id="title"></title>
185 190
186 </head> 191 </head>
187 192
188 <body> 193 <body>
189 194
190 <div id="listingParsingErrorBox" i18n-values=".innerHTML:listingParsingErrorBoxT ext"></div> 195 <div id="listingParsingErrorBox" i18n-values=".innerHTML:listingParsingErrorBoxT ext"></div>
191 196
192 <span id="parentDirText" style="display:none" i18n-content="parentDirText"></spa n> 197 <h1 id="header" i18n-content="header"></h1>
193 198
194 <h1 id="header" i18n-content="header"></h1> 199 <div id="parentDirLinkBox" style="display:none">
200 <a id="parentDirLink" class="icon up">
201 <span id="parentDirText" i18n-content="parentDirText"></span>
202 </a>
203 </div>
195 204
196 <table> 205 <table>
197 <thead> 206 <thead>
198 <tr class="header" id="theader"> 207 <tr class="header" id="theader">
199 <th i18n-content="headerName" onclick="javascript:sortTable(0);"></th> 208 <th i18n-content="headerName" onclick="javascript:sortTable(0);"></th>
200 <th class="detailsColumn" i18n-content="headerSize" onclick="javascript:so rtTable(1);"></th> 209 <th class="detailsColumn" i18n-content="headerSize" onclick="javascript:so rtTable(1);"></th>
201 <th class="detailsColumn" i18n-content="headerDateModified" onclick="javas cript:sortTable(2);"></th> 210 <th class="detailsColumn" i18n-content="headerDateModified" onclick="javas cript:sortTable(2);"></th>
202 </tr> 211 </tr>
203 </thead> 212 </thead>
204 <tbody id="tbody"> 213 <tbody id="tbody">
205 </tbody> 214 </tbody>
206 </table> 215 </table>
207 216
208 </body> 217 </body>
209 218
210 </html> 219 </html>
OLDNEW
« no previous file with comments | « content/child/ftp_directory_listing_response_delegate.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698