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

Side by Side Diff: app/lib/templates.dart

Issue 2074933004: Add support for showing latest dev/stable versions (Closed) Base URL: git@github.com:dart-lang/pub-dartlang-dart.git@master
Patch Set: Added escaping & addressed comments Created 4 years, 5 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 | « app/lib/package_memcache.dart ('k') | app/views/pkg/show.mustache » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library pub_dartlang_org.templates; 5 library pub_dartlang_org.templates;
6 6
7 import 'dart:convert'; 7 import 'dart:convert';
8 import 'dart:io'; 8 import 'dart:io';
9 import 'dart:math'; 9 import 'dart:math';
10 10
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 title = 'Page ${links.currentPage} | $title'; 99 title = 'Page ${links.currentPage} | $title';
100 } 100 }
101 101
102 return _renderPage('pkg/index', values, title: title); 102 return _renderPage('pkg/index', values, title: title);
103 } 103 }
104 104
105 /// Renders the `views/private_keys/show.mustache` template. 105 /// Renders the `views/private_keys/show.mustache` template.
106 String renderPkgShowPage(Package package, 106 String renderPkgShowPage(Package package,
107 List<PackageVersion> versions, 107 List<PackageVersion> versions,
108 List<Uri> versionDownloadUrls, 108 List<Uri> versionDownloadUrls,
109 PackageVersion latestVersion, 109 PackageVersion selectedVersion,
110 PackageVersion latestStableVersion,
111 PackageVersion latestDevVersion,
110 int totalNumberOfVersions) { 112 int totalNumberOfVersions) {
111 assert(versions.length == versionDownloadUrls.length); 113 assert(versions.length == versionDownloadUrls.length);
112 114
113 var importExamples; 115 var importExamples;
114 if (latestVersion.libraries.contains('${package.id}.dart')) { 116 if (selectedVersion.libraries.contains('${package.id}.dart')) {
115 importExamples = [{ 117 importExamples = [{
116 'package' : package.id, 118 'package' : package.id,
117 'library' : '${package.id}.dart', 119 'library' : '${package.id}.dart',
118 }]; 120 }];
119 } else { 121 } else {
120 importExamples = latestVersion.libraries.map((library) { 122 importExamples = selectedVersion.libraries.map((library) {
121 return { 123 return {
122 'package' : latestVersion.packageKey.id, 124 'package' : selectedVersion.packageKey.id,
123 'library' : library, 125 'library' : library,
124 }; 126 };
125 }).toList(); 127 }).toList();
126 } 128 }
127 129
128 // TODO(nweiz): Once the 1.11 SDK is out and pub supports ">=1.2.3-pre 130 // TODO(nweiz): Once the 1.11 SDK is out and pub supports ">=1.2.3-pre
129 // <1.2.3", suggest that as the version constraint for prerelease versions. 131 // <1.2.3", suggest that as the version constraint for prerelease versions.
130 var exampleVersionConstraint = '"^${latestVersion.version}"'; 132 var exampleVersionConstraint = '"^${selectedVersion.version}"';
131 133
132 bool isMarkdownFile(String filename) { 134 bool isMarkdownFile(String filename) {
133 return filename.toLowerCase().endsWith('.md'); 135 return filename.toLowerCase().endsWith('.md');
134 } 136 }
135 137
136 String renderPlainText(String text) { 138 String renderPlainText(String text) {
137 return '<div class="highlight"><pre>${cmd.escapeAngleBrackets(text)}' 139 return '<div class="highlight"><pre>${cmd.escapeAngleBrackets(text)}'
138 '</pre></div>'; 140 '</pre></div>';
139 } 141 }
140 142
141 var readmeFilename; 143 var readmeFilename;
142 var renderedReadme; 144 var renderedReadme;
143 if (latestVersion.readme != null) { 145 if (selectedVersion.readme != null) {
144 readmeFilename = latestVersion.readme.filename; 146 readmeFilename = selectedVersion.readme.filename;
145 String readme = latestVersion.readme.text; 147 String readme = selectedVersion.readme.text;
146 if (readme != null) { 148 if (readme != null) {
147 if (isMarkdownFile(readmeFilename)) { 149 if (isMarkdownFile(readmeFilename)) {
148 try { 150 try {
149 renderedReadme = cmd.markdownToHtml(readme); 151 renderedReadme = cmd.markdownToHtml(readme);
150 } catch (e) { 152 } catch (e) {
151 renderedReadme = md.markdownToHtml(readme); 153 renderedReadme = md.markdownToHtml(readme);
152 } 154 }
153 } else { 155 } else {
154 renderedReadme = renderPlainText(readme); 156 renderedReadme = renderPlainText(readme);
155 } 157 }
156 } 158 }
157 } 159 }
158 160
159 var changelogFilename; 161 var changelogFilename;
160 var renderedChangelog; 162 var renderedChangelog;
161 if (latestVersion.changelog != null) { 163 if (selectedVersion.changelog != null) {
162 changelogFilename = latestVersion.changelog.filename; 164 changelogFilename = selectedVersion.changelog.filename;
163 String changelog = latestVersion.changelog.text; 165 String changelog = selectedVersion.changelog.text;
164 if (changelog != null) { 166 if (changelog != null) {
165 if (isMarkdownFile(changelogFilename)) { 167 if (isMarkdownFile(changelogFilename)) {
166 try { 168 try {
167 renderedChangelog = cmd.markdownToHtml(changelog); 169 renderedChangelog = cmd.markdownToHtml(changelog);
168 } catch (e) { 170 } catch (e) {
169 renderedChangelog = md.markdownToHtml(changelog); 171 renderedChangelog = md.markdownToHtml(changelog);
170 } 172 }
171 } else { 173 } else {
172 renderedChangelog = renderPlainText(changelog); 174 renderedChangelog = renderPlainText(changelog);
173 } 175 }
174 } 176 }
175 } 177 }
176 178
177 var versionsJson = []; 179 var versionsJson = [];
178 for (int i = 0; i < versions.length; i++) { 180 for (int i = 0; i < versions.length; i++) {
179 PackageVersion version = versions[i]; 181 PackageVersion version = versions[i];
180 String url = versionDownloadUrls[i].toString(); 182 String url = versionDownloadUrls[i].toString();
181 versionsJson.add({ 183 versionsJson.add({
182 'version': version.id, 184 'version': version.id,
183 'short_created': version.shortCreated, 185 'short_created': version.shortCreated,
184 'documentation': version.documentation, 186 'documentation': version.documentation,
185 'download_url': url, 187 'download_url': url,
186 }); 188 });
187 } 189 }
188 190
191 bool should_show_dev =
192 latestStableVersion.semanticVersion < latestDevVersion.semanticVersion;
193 bool should_show =
194 selectedVersion != latestStableVersion || should_show_dev;
195
189 var values = { 196 var values = {
190 'package': { 197 'package': {
191 'name' : package.name, 198 'name' : package.name,
192 'latest_version' : { 199 'selected_version' : {
193 'version' : latestVersion.id, 200 'version' : selectedVersion.id,
194 'example_version_constraint' : exampleVersionConstraint, 201 'example_version_constraint' : exampleVersionConstraint,
195 'has_libraries' : importExamples.length > 0, 202 'has_libraries' : importExamples.length > 0,
196 'import_examples' : importExamples, 203 'import_examples' : importExamples,
197 }, 204 },
198 'description' : latestVersion.pubspec.description, 205 'latest' : {
206 'should_show' : should_show,
207 'should_show_dev' : should_show_dev,
208 'stable_href' : Uri.encodeComponent(latestStableVersion.id),
209 'stable_name' : _HtmlEscaper.convert(latestStableVersion.id),
210 'dev_href' : Uri.encodeComponent(latestDevVersion.id),
211 'dev_name' : _HtmlEscaper.convert(latestDevVersion.id),
212 },
213 'description' : selectedVersion.pubspec.description,
199 // TODO: make this 'Authors' if PackageVersion.authors is a list?! 214 // TODO: make this 'Authors' if PackageVersion.authors is a list?!
200 'authors_title' : 'Author', 215 'authors_title' : 'Author',
201 'authors_html' : _getAuthorsHtml(latestVersion), 216 'authors_html' : _getAuthorsHtml(selectedVersion),
202 'homepage' : latestVersion.homepage, 217 'homepage' : selectedVersion.homepage,
203 'nice_homepage' : latestVersion.homepageNice, 218 'nice_homepage' : selectedVersion.homepageNice,
204 'documentation' : latestVersion.documentation, 219 'documentation' : selectedVersion.documentation,
205 'nice_documentation' : latestVersion.documentationNice, 220 'nice_documentation' : selectedVersion.documentationNice,
206 'crossdart' : latestVersion.crossdart, 221 'crossdart' : selectedVersion.crossdart,
207 'nice_crossdart' : latestVersion.crossdartNice, 222 'nice_crossdart' : selectedVersion.crossdartNice,
208 // TODO: make this 'Uploaders' if Package.uploaders is > 1?! 223 // TODO: make this 'Uploaders' if Package.uploaders is > 1?!
209 'uploaders_title' : 'Uploader', 224 'uploaders_title' : 'Uploader',
210 'uploaders_html' : _getUploadersHtml(package), 225 'uploaders_html' : _getUploadersHtml(package),
211 }, 226 },
212 'versions' : versionsJson, 227 'versions' : versionsJson,
213 'show_versions_link' : totalNumberOfVersions > versions.length, 228 'show_versions_link' : totalNumberOfVersions > versions.length,
214 'readme' : renderedReadme, 229 'readme' : renderedReadme,
215 'readme_filename' : readmeFilename, 230 'readme_filename' : readmeFilename,
216 'changelog' : renderedChangelog, 231 'changelog' : renderedChangelog,
217 'changelog_filename': changelogFilename, 232 'changelog_filename': changelogFilename,
218 'version_count' : '$totalNumberOfVersions', 233 'version_count' : '$totalNumberOfVersions',
219 }; 234 };
220 return _renderPage('pkg/show', values, 235 return _renderPage('pkg/show', values,
221 title: '${package.name} ${latestVersion.id} | Pub Package Manager', 236 title: '${package.name} ${selectedVersion.id} | Pub Package Manager',
222 packageVersion: latestVersion); 237 packageVersion: selectedVersion);
223 } 238 }
224 239
225 /// Renders the `views/admin.mustache` template. 240 /// Renders the `views/admin.mustache` template.
226 String renderAdminPage(bool privateKeysSet, bool isProduction, 241 String renderAdminPage(bool privateKeysSet, bool isProduction,
227 {ReloadStatus reloadStatus}) { 242 {ReloadStatus reloadStatus}) {
228 var reload_status = reloadStatus == null ? {} : { 243 var reload_status = reloadStatus == null ? {} : {
229 'count' : reloadStatus.count, 244 'count' : reloadStatus.count,
230 'total' : reloadStatus.total, 245 'total' : reloadStatus.total,
231 'percentage' : reloadStatus.percentage, 246 'percentage' : reloadStatus.percentage,
232 }; 247 };
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 class PackageLinks extends PageLinks { 481 class PackageLinks extends PageLinks {
467 static const int RESULTS_PER_PAGE = 10; 482 static const int RESULTS_PER_PAGE = 10;
468 static const int MAX_PAGES = 15; 483 static const int MAX_PAGES = 15;
469 484
470 PackageLinks(int offset, int count) : super(offset, count); 485 PackageLinks(int offset, int count) : super(offset, count);
471 486
472 PackageLinks.empty() : super.empty(); 487 PackageLinks.empty() : super.empty();
473 488
474 String formatHref(int page) => '/packages?page=$page'; 489 String formatHref(int page) => '/packages?page=$page';
475 } 490 }
OLDNEW
« no previous file with comments | « app/lib/package_memcache.dart ('k') | app/views/pkg/show.mustache » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698