| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |