Show.html 11.4 KB
Newer Older
1
<html xmlns:terfe2="http://typo3.org/ns/T3o/TerFe2/ViewHelpers" xmlns:tl="http://typo3.org/ns/T3o/T3olayout/ViewHelpers" xmlns:f="http://www.w3.org/1999/html">
2

3
<f:layout name="Default" />
4
5

<f:section name="main">
6

7
8
9
10
11
12
13
14
15
16
17
18
19
    <f:if condition="{extension}">
        <f:then>
            <tl:metaTag property="og:title" content="{extension.lastVersion.title} ({extension.extKey})" />
            <tl:metaTag property="og:description" content="{extension.lastVersion.description}" />
            <tl:titleTag>{extension.lastVersion.title} ({extension.extKey})</tl:titleTag>
            <f:security.ifHasRole role="{settings.reviewerGroupUid}">
                <div class="alert alert-info mb-3" role="alert">
                    <div class="media">
                        <f:format.raw>
                            <tl:gravatar emailAddress="{owner.email}" size="125" />
                        </f:format.raw>
                        <div class="media-body ml-5">
                            <h4>Owner of this extension</h4>
20
21
22
23
24
25
26
27
28
29
30
31
32
                            <f:if condition="{owner}">
                                <f:then>
                                    <p>
                                        <strong>Name:</strong> {owner.name}<br>
                                        <strong>Email:</strong>
                                        <f:link.email email="{owner.email}">{owner.email}</f:link.email>
                                        <br>
                                        <strong>Username:</strong> {owner.username}
                                    </p>
                                </f:then>
                                <f:else>
                                    <p>
                                        <strong>Username:</strong> {extension.frontendUser}
Thomas Löffler's avatar
Thomas Löffler committed
33
                                        <small>User did not log in on typo3.org at least once.</small>
34
35
36
                                    </p>
                                </f:else>
                            </f:if>
37
38
39
40
41
42
43
44
                        </div>
                    </div>
                </div>
            </f:security.ifHasRole>
            <f:if condition="{extension.lastVersion.reviewState} == -2">
                <div class="alert alert-warning mt-3 mb-3" role="alert">
                    <h4 class="alert-header">
                        <span class="ter-ext-state-beta"><i class="fa fa-exclamation-triangle"></i></span>
45
                        Outdated extension<br>
46
47
48
49
                        <small class="text-muted">This extension supports none of the currently supported TYPO3 core version</small>
                    </h4>
                </div>
            </f:if>
50
51
52
53
            <f:if condition="{owner.username} == 'abandoned_extensions'">
                <div class="alert alert-danger mt-3 mb-3" role="alert">
                    <h4 class="alert-header">
                        <span class="ter-ext-state-beta"><i class="fa fa-exclamation-triangle"></i></span>
54
55
                        Abandoned extension<br>
                        <small class="text-muted">This extension has no maintainer at the moment. If you like to get the maintainer of this extension, fill out our <f:link.page pageUid="{settings.pages.abandonedExtensionFormPid}">registration form</f:link.page>.</small>
56
57
58
                    </h4>
                </div>
            </f:if>
59

60
            <div itemscope itemtype="http://schema.org/SoftwareApplication">
61
62
63
64
65
66
67
68
                <div hidden itemprop="applicationCategory">TYPO3 Extension</div>
                <div hidden itemprop="applicationSuite">TYPO3</div>
                <div hidden itemprop="downloadUrl">
                    <f:uri.action action="download" absolute="1" controller="Extension" arguments="{extension: extension}" />
                </div>
                <div hidden itemprop="fileFormat">application/zip</div>
                <div hidden itemprop="operatingSystem">Windows,Linux,MacOS</div>

69
70
71
72
73
                <div class="row mt-3 align-items-center">
                    <div class="col-md-9">
                        <header>
                            <h1>
                                <terfe2:extensionIcon version="{extension.lastVersion}" alt="{extension.lastVersion.title}" class="ter-ext-icon" />
Thomas Löffler's avatar
Thomas Löffler committed
74
75
76
                                <span title="Extension title: {extension.lastVersion.title}" itemprop="alternateName">{extension.lastVersion.title}</span>
                            </h1>
                            <h2>
77
                                <small class="text-muted">
Thomas Löffler's avatar
Thomas Löffler committed
78
79
                                    <span itemprop="name" title="Extension key: {extension.extKey}">{extension.extKey}</span> /
                                    <span title="Stability: {extension.lastVersion.state}" class="ter-ext-state-{extension.lastVersion.state}">{extension.lastVersion.state}</span>
80
                                </small>
Thomas Löffler's avatar
Thomas Löffler committed
81
82
                                <f:render partial="Like" arguments="{hasLiked: hasLiked, extension: extension}" />
                            </h2>
83
84
85
                        </header>
                    </div>
                    <div class="col-md-3">
Thomas Löffler's avatar
Thomas Löffler committed
86

87
                    </div>
88
                </div>
89

90
91
92
93
94
95
                <div class="row mb-3">
                    <div class="col-md-8">
                        <p itemprop="description">{extension.lastVersion.description}</p>
                        <h3>
                            <f:render partial="VersionSupportForTypo3" arguments="{version: extension.lastVersion}" />
                        </h3>
96
                        <f:if condition="{extension.composerName}">
Thomas Löffler's avatar
Thomas Löffler committed
97
                            <p class="mb-3">
98
99
                            <h3>Composer support</h3>
                            <f:render partial="ComposerNameWithClipboard" arguments="{composerName: extension.composerName}" />
Thomas Löffler's avatar
Thomas Löffler committed
100
                            </p>
101
                        </f:if>
102
103
104
105
                        <f:if condition="{extension.tags}">
                            <h3>Tags</h3>
                            <p class="tags">
                                <f:for each="{extension.tags}" as="tag">
Thomas Löffler's avatar
Thomas Löffler committed
106
                                    <f:link.page class="btn btn-outline-info mb-1" pageUid="{settings.pages.searchResultsPid}" additionalParams="{tx_solr: {filter: {0: 'tags:{tag.title}'}}}">
107
108
109
110
                                        <strong>#{tag.title}</strong>
                                    </f:link.page>
                                </f:for>
                            </p>
Thomas Löffler's avatar
Thomas Löffler committed
111
112
113
114
115
116
117
                            <div hidden itemprop="keywords">
                                <f:for each="{extension.tags}" as="tag" iteration="it">{tag.title}
                                    <f:if condition="{it.isLast}">
                                        <f:else>,</f:else>
                                    </f:if>
                                </f:for>
                            </div>
118
                        </f:if>
119
                        <h3>
120
                            <f:translate key="last_upload_comment" />
121
                        </h3>
122
123
124
125
126
127
128
129
                        <p itemprop="releaseNotes">
                            <f:format.nl2br>{extension.lastVersion.uploadComment}</f:format.nl2br>
                        </p>
                        <f:if condition="{versionHistory->f:count()} >= 1}">
                            <h3>
                                <f:translate key="downloads_by_version" />
                            </h3>
                            <script type="text/javascript">
130
                                var versionChartData = {extension.downloadsByVersionsAsJson -> f:format.raw()};
131
132
                            </script>
                            <div id="versionChart">
133

134
135
136
137
                            </div>
                        </f:if>
                    </div>
                    <div class="col-md-4">
Thomas Löffler's avatar
Thomas Löffler committed
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
                        <f:if condition="{extension.lastVersion.reviewState} != -1">
                            <f:link.action class="btn btn-primary btn-block btn-lg" controller="Extension" action="download" arguments="{extension : extension, versionString : extension.lastVersion.versionString, format : 'zip'}">
                                <strong>Download
                                    <span itemprop="softwareVersion">{extension.lastVersion.versionString}</span></strong>
                            </f:link.action>
                        </f:if>
                        <f:if condition="{extension.externalManual}">
                            <f:then>
                                <f:link.external class="btn btn-info btn-block" rel="nofollow" uri="{extension.externalManual}" target="_blank">
                                    <i class="fa fa-book"></i> External Manual
                                </f:link.external>
                            </f:then>
                            <f:else>
                                <f:if condition="{documentationLink}">
                                    <f:link.external class="btn btn-info btn-block" uri="{documentationLink}" target="_blank">
                                        <i class="fa fa-book"></i> Extension Manual
                                    </f:link.external>
                                </f:if>
                            </f:else>
                        </f:if>
                        <f:if condition="{extension.forgeLink}">
                            <f:link.external class="btn btn-secondary btn-block" rel="nofollow" uri="{extension.forgeLink}" target="_blank">
                                <i class="fa fa-hand-o-right"></i> Found an Issue?
                            </f:link.external>
                        </f:if>
                        <f:if condition="{extension.repositoryUrl}">
                            <f:link.external class="btn btn-secondary btn-block" rel="nofollow" uri="{extension.repositoryUrl}" target="_blank">
                                <i class="fa fa-code-fork"></i> Code Insights
                            </f:link.external>
                        </f:if>
                        <f:if condition="{extension.paypalUrl}">
                            <f:link.external class="btn btn-secondary btn-block" rel="nofollow" uri="{extension.paypalUrl}" target="_blank">
Thomas Löffler's avatar
Thomas Löffler committed
170
                                <i class="fa fa-thumbs-o-up"></i> Donate and Give Kudos
Thomas Löffler's avatar
Thomas Löffler committed
171
172
173
                            </f:link.external>
                        </f:if>

174
                        <div class="alert alert-secondary">
175
                            <f:render partial="ExtensionSingleInfo" arguments="{extension:extension, settings:settings, owner:owner, flattrUrl:flattrUrl, documentationLink:documentationLink, qualityLinkNotBroken:qualityLinkNotBroken, urlToQualityServer:urlToQualityServer}" />
176
177
178
                        </div>
                    </div>
                </div>
179

180
                <f:render partial="InstallationHowTo" arguments="{_all}" />
181

Thomas Löffler's avatar
Thomas Löffler committed
182
183
184
185
186
187
                <h3 id="version-history">
                    <f:translate key="version_history" />
                </h3>
                <div class="ter-ext-single-versionhistory ter-toggle-hide">
                    <f:render partial="ExtensionUploadHistoryList" arguments="{versionHistory: extension.reverseVersionsByVersionNumber, extension: extension}" />
                </div>
sventb's avatar
sventb committed
188

189
190
                <div class="socialshareprivacy"></div>
            </div>
191
192
193
        </f:then>
        <f:else>
            <div class="alert alert-warning">
194
                No public version of this extension available.
195
196
197
            </div>
        </f:else>
    </f:if>
198
</f:section>
199
200

</html>