]> git.lizzy.rs Git - cheatdb.git/blob - app/templates/packages/view.html
Add forum topic validation
[cheatdb.git] / app / templates / packages / view.html
1 {% extends "base.html" %}
2
3 {% block title %}
4         {{ package.title }}
5 {% endblock %}
6
7 {% block content %}
8         {% if not package.approved %}
9                 <div class="box box_grey alert alert-warning">
10                         <span class="icon_message"></span>
11                         {% if package.releases.count() == 0 %}
12                                 {% if package.checkPerm(current_user, "MAKE_RELEASE") %}
13                                         You need to create a release before this package can be approved.
14                                         <p>
15                                                 A release is a single downloadable version of your {{ package.type.value | lower }}.
16                                                 You need to create releases even if you use a rolling release development cycle,
17                                                 as Minetest needs them to check for updates.
18                                         </p>
19                                         <a class="button" href="{{ package.getCreateReleaseURL() }}">Create Release</a>
20                                 {% else %}
21                                         A release is required before this package can be approved.
22                                 {% endif %}
23
24                         {% elif (package.type == package.type.GAME or package.type == package.type.TXP) and package.screenshots.count() == 0 %}
25                                 You need to add at least one screenshot.
26
27                         {% elif topic_error_lvl == "error" %}
28                                 Please fix the below topic issue(s).
29
30                         {% else %}
31                                 {% if package.screenshots.count() == 0 %}
32                                         <b>You should add at least one screenshot, but this isn't required.</b><br />
33                                 {% endif %}
34
35                                 {% if not package.getDownloadRelease() %}
36                                         Please wait for the release to be approved.
37                                 {% elif package.checkPerm(current_user, "APPROVE_NEW") %}
38                                         You can now approve this package if you're ready.
39                                         <form method="post" action="{{ package.getApproveURL() }}">
40                                                 <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
41                                                 <input type="submit" value="Approve" />
42                                         </form>
43                                 {% else %}
44                                         Please wait for the package to be approved.
45                                 {% endif %}
46                         {% endif %}
47                         <div style="clear: both;"></div>
48                 </div>
49
50                 {% if topic_error %}
51                         <div class="box box_grey alert alert-{{ topic_error_lvl }}">
52                                 <span class="icon_message"></span>
53                                 {{ topic_error | safe }}
54                                 <div style="clear: both;"></div>
55                         </div>
56                 {% endif %}
57
58                 {% if package.author == current_user or package.checkPerm(current_user, "APPROVE_NEW") %}
59                         {% if review_thread %}
60                                 <h2>&#x1f512; {{ review_thread.title }}</h2>
61                                 <p><i>
62                                         This thread is only visible to the package owner and users of
63                                         Editor rank or above.
64                                 </i></p>
65
66                                 {% from "macros/threads.html" import render_thread %}
67                                 {{ render_thread(review_thread, current_user) }}
68                         {% else %}
69                                 <div class="box box_grey alert alert-info">
70                                         Privately ask a question or give feedback
71
72                                         <a class="alert_right button" href="{{ url_for('new_thread_page', pid=package.id, title='Package approval comments') }}">Open Thread</a>
73                                 </div>
74                         {% endif %}
75                 {% endif %}
76         {% endif %}
77
78         <h1>{{ package.title }} by {{ package.author.display_name }}</h1>
79
80         <ul class="screenshot_list">
81                 {% for ss in package.screenshots %}
82                         {% if ss.approved or package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
83                                 <li>
84                                         <a href="{% if package.checkPerm(current_user, 'ADD_SCREENSHOTS') %}{{ ss.getEditURL() }}{% else %}{{ ss.url }}{% endif %}">
85                                                 <img src="{{ ss.getThumbnailURL() }}" alt="{{ ss.title }}" />
86                                         </a>
87                                 </li>
88                         {% endif %}
89                 {% endfor %}
90         </ul>
91
92         <aside class="asideright box box_grey">
93                 <h3>Details</h3>
94
95                 <div class="box-body">
96                         {% if not package.license.is_foss and not package.media_license.is_foss and package.type != package.type.TXP  %}
97                                 <div class="box box_grey alert alert-error" style="margin-top: 0;">
98                                         <b>Warning:</b> Non-free code and media.
99                                 </div>
100                         {% elif not package.license.is_foss and package.type != package.type.TXP %}
101                                 <div class="box box_grey alert alert-error" style="margin-top: 0;">
102                                         <b>Warning:</b> Non-free code.
103                                 </div>
104                         {% elif not package.media_license.is_foss %}
105                                 <div class="box box_grey alert alert-error" style="margin-top: 0;">
106                                         <b>Warning:</b> Non-free media.
107                                 </div>
108                         {% endif %}
109                         <table>
110                                 <tr>
111                                         <td>Name</td>
112                                         <td>{{ package.name }}</td>
113                                 </tr>
114                                 {% if package.provides %}
115                                 <tr>
116                                         <td>Provides</td>
117                                         <td>{% for meta in package.provides %}
118                                                 <a href="{{ url_for('meta_package_page', name=meta.name) }}">{{ meta.name }}</a>
119                                                 {%- if not loop.last %}
120                                                 ,
121                                                 {% endif %}
122                                         {% endfor %}</td>
123                                 </tr>
124                                 {% endif %}
125                                 <tr>
126                                         <td>Author</td>
127                                         <td class="{{ package.author.rank }}">
128                                                 <a href="{{ url_for('user_profile_page', username=package.author.username) }}">
129                                                         {{ package.author.display_name }}
130                                                 </a>
131                                         </td>
132                                 </tr>
133                                 <tr>
134                                         <td>Type</td>
135                                         <td>{{ package.type.value }}</td>
136                                 </tr>
137                                 <tr>
138                                         <td>License</td>
139                                         <td>
140                                                 {% if package.license == package.media_license %}
141                                                         {{ package.license.name }}
142                                                 {% elif package.type == package.type.TXP %}
143                                                         {{ package.media_license.name }}
144                                                 {% else %}
145                                                         {{ package.license.name }} for code,<br />
146                                                         {{ package.media_license.name }} for media.
147                                                 {% endif %}
148                                         </td>
149                                 </tr>
150                                 <tr>
151                                         <td>Added</td>
152                                         <td>{{ package.created_at | datetime }}</td>
153                                 </tr>
154                         </table>
155
156                         <ul class="buttonset linedbuttonset">
157                                 {% if package.getDownloadRelease() %}<li><a href="{{ package.getDownloadURL() }}" class="btn_green">Download</a></li>{% endif %}
158                                 {% if package.repo %}<li><a href="{{ package.repo }}">View Source</a></li>{% endif %}
159                                 {% if package.forums %}<li><a href="https://forum.minetest.net/viewtopic.php?t={{ package.forums }}">Forums</a></li>{% endif %}
160                                 {% if package.issueTracker %}<li><a href="{{ package.issueTracker }}">Issue Tracker</a></li>{% endif %}
161                                 {% if package.website %}<li><a href="{{ package.website }}">Website</a></li>{% endif %}
162                                 {% if package.checkPerm(current_user, "EDIT_PACKAGE") %}
163                                         <li><a href="{{ package.getEditURL() }}">Edit</a></li>
164                                         <li><a href="{{ package.getNewScreenshotURL() }}">Add screenshot</a></li>
165                                 {% endif %}
166                                 {# {% if current_user.is_authenticated %}
167                                         <li><a href="{{ package.getCreateEditRequestURL() }}">Suggest Changes</a></li>
168                                 {% endif %} #}
169                                 {% if package.checkPerm(current_user, "MAKE_RELEASE") %}
170                                         <li><a href="{{ package.getCreateReleaseURL() }}">Create Release</a></li>
171                                 {% endif %}
172                                 {% if package.checkPerm(current_user, "DELETE_PACKAGE") %}
173                                         <li><a href="{{ package.getDeleteURL() }}">Delete</a></li>
174                                 {% endif %}
175                         </ul>
176                 </div>
177         </aside>
178
179         <p class="package-short-large">{{ package.shortDesc }}</p>
180
181         {{ package.desc | markdown }}
182
183         <h3>Releases</h3>
184
185         <ul>
186                 {% for rel in releases %}
187                         {% if rel.approved or package.checkPerm(current_user, "MAKE_RELEASE") or package.checkPerm(current_user, "APPROVE_RELEASE")  %}
188                                 <li>
189                                         {% if not rel.approved %}<i>{% endif %}
190
191                                         <a href="{{ rel.url }}">{{ rel.title }}</a>,
192                                         created {{ rel.releaseDate | datetime }}.
193                                         {% if rel.task_id %}
194                                                 <a href="{{ url_for('check_task', id=rel.task_id, r=package.getDetailsURL()) }}">Importing...</a>
195                                         {% elif not rel.approved %}
196                                                 Waiting for approval.
197                                         {% endif %}
198
199                                         {% if package.checkPerm(current_user, "MAKE_RELEASE") or package.checkPerm(current_user, "APPROVE_RELEASE")  %}
200                                                 <a href="{{ rel.getEditURL() }}">Edit
201                                                 {% if not rel.task_id and not rel.approved and package.checkPerm(current_user, "APPROVE_RELEASE") %}
202                                                         / Approve
203                                                 {% endif %}
204                                                 </a>
205                                         {% endif %}
206
207                                         {% if not rel.approved %}</i>{% endif %}
208                                 </li>
209                         {% endif %}
210                 {% else %}
211                         <li>No releases available.</li>
212                 {% endfor %}
213         </ul>
214
215         <h3>Tags</h3>
216         <ul>
217                 {% for t in package.tags %}
218                         <li>{{ t.title }}</li>
219                 {% else %}
220                         <li>No tags.</li>
221                 {% endfor %}
222         </ul>
223
224         <!-- <table class="table-topalign">
225                 <tr>
226                         <td> -->
227                                 <h3>Dependencies</h3>
228                                 <ul>
229                                         {% for dep in package.dependencies %}
230                                                 <li>
231                                                         {%- if dep.package %}
232                                                                 <a href="{{ dep.package.getDetailsURL() }}">{{ dep.package.title }}</a> by {{ dep.package.author.display_name }}
233                                                         {% elif dep.meta_package %}
234                                                                 <a href="{{ url_for('meta_package_page', name=dep.meta_package.name) }}">{{ dep.meta_package.name }}</a>
235                                                         {% else %}
236                                                                 {{ "Excepted package or meta_package in dep!" | throw }}
237                                                         {% endif %}
238                                                         {% if dep.optional %}
239                                                                 [optional]
240                                                         {% endif %}
241                                                 </li>
242                                         {% else %}
243                                                 <li><i>No dependencies</i></li>
244                                         {% endfor %}
245                                 </ul>
246                         <!-- </td>
247                         <td>
248                                 <h3>Required by</h3>
249                                 <ul>
250                                         {% for p in package.dependents %}
251                                                 <li><a href="{{ p.getDetailsURL() }}">{{ p.title }}</a> by {{ p.author.display_name }}</li>
252                                         {% else %}
253                                                 {% if not package.softdependents %}
254                                                 <li>No dependents.</li>
255                                                 {% endif %}
256                                         {% endfor %}
257                                         {% for p in package.softdependents %}
258                                                 <li><a href="{{ p.getDetailsURL() }}">{{ p.title }}</a> by {{ p.author.display_name }} [optional]</li>
259                                         {% endfor %}
260                                 </ul>
261                         </td>
262                 </tr>
263         </table> -->
264
265         {#
266                 {% if current_user.is_authenticated or requests %}
267                         <h3>Edit Requests</h3>
268
269                         <ul>
270                                 {% for r in requests %}
271                                         <li>
272                                                 <a href="{{ r.getURL() }}">{{ r.title }}</a>
273                                                 by
274                                                 <a href="{{ url_for('user_profile_page', username=r.author.username) }}">{{ r.author.display_name }}</a>
275                                         </li>
276                                 {% else %}
277                                         <li>No edit requests have been made.</li>
278                                 {% endfor %}
279                         </ul>
280                 {% endif %}
281         #}
282
283         {% if alternatives %}
284                 <h3>Alternatives</h3>
285                 <ul>
286                         {% for p in alternatives %}
287                                 <li><a href="{{ p.getDetailsURL() }}">{{ p.title }} by {{ p.author.display_name }}</a></li>
288                         {% endfor %}
289                 </ul>
290         {% endif %}
291
292         {% if similar_topics %}
293                 <h3>Similar Forum Topics</h3>
294                 {% if not package.approved and package.type == package.type.MOD %}
295                         <div class="box box_grey alert alert-warning">
296                                 Please make sure that this package has the right to
297                                 the name '{{ package.name }}'.
298                                 See the
299                                 <a href="/policy_and_guidance/">Inclusion Policy</a>
300                                 for more info.
301                         </div>
302                 {% endif %}
303                 <ul>
304                         {% for t in similar_topics %}
305                                 <li>
306                                         [{{ t.type.value }}]
307                                         <a href="https://forum.minetest.net/viewtopic.php?t={{ t.topic_id }}">
308                                                 {{ t.title }} by {{ t.author.display_name }}
309                                         </a>
310                                         {% if t.wip %}[WIP]{% endif %}
311                                 </li>
312                         {% endfor %}
313                 </ul>
314         {% endif %}
315 {% endblock %}