Show.html 12.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
    <f:if condition="{extension}">
        <f:then>
Michal Cygankiewicz's avatar
Michal Cygankiewicz committed
9 10
            <tl:metaTag property="name" name="og:title" content="{extension.lastVersion.title} ({extension.extKey})" />
            <tl:metaTag property="name" name="og:description" content="{extension.lastVersion.description}" />
11 12 13 14 15 16 17 18 19
            <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
                        Abandoned extension<br>
55
                        <small class="text-muted">This extension has no maintainer at the moment. If you like to become 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
                <div class="row mt-3 align-items-center">
                    <div class="col-md-9">
                        <header>
                            <h1>
73
                                <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
                <div class="row mb-3">
                    <div class="col-md-8">
                        <p itemprop="description">{extension.lastVersion.description}</p>
93
                        <f:render partial="VersionSupportForTypo3" arguments="{version: extension.lastVersion}" />
94
                        <f:if condition="{extension.composerName}">
Thomas Löffler's avatar
Thomas Löffler committed
95
                            <p class="mb-3">
96
                            <h4>Composer support</h4>
97
                            <f:render partial="ComposerNameWithClipboard" arguments="{composerName: extension.composerName}" />
Thomas Löffler's avatar
Thomas Löffler committed
98
                            </p>
99
                        </f:if>
100
                        <f:if condition="{extension.tags}">
101
                            <h4>Tags</h4>
102 103
                            <p class="tags">
                                <f:for each="{extension.tags}" as="tag">
Thomas Löffler's avatar
Thomas Löffler committed
104
                                    <f:link.page class="btn btn-outline-info mb-1" pageUid="{settings.pages.searchResultsPid}" additionalParams="{tx_solr: {filter: {0: 'tags:{tag.title}'}}}">
105 106 107 108
                                        <strong>#{tag.title}</strong>
                                    </f:link.page>
                                </f:for>
                            </p>
Thomas Löffler's avatar
Thomas Löffler committed
109 110 111 112 113 114 115
                            <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>
116
                        </f:if>
117
                        <h4>
118
                            <f:translate key="last_upload_comment" />
119
                        </h4>
120 121 122 123
                        <p itemprop="releaseNotes">
                            <f:format.nl2br>{extension.lastVersion.uploadComment}</f:format.nl2br>
                        </p>
                        <f:if condition="{versionHistory->f:count()} >= 1}">
124
                            <h4>
125
                                <f:translate key="downloads_by_version" />
126
                            </h4>
127
                            <script type="text/javascript">
128
                                var versionChartData = {extension.downloadsByVersionsAsJson -> f:format.raw()};
129 130
                            </script>
                            <div id="versionChart">
131

132 133 134 135
                            </div>
                        </f:if>
                    </div>
                    <div class="col-md-4">
Thomas Löffler's avatar
Thomas Löffler committed
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
                        <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>
156 157 158 159 160 161 162 163 164 165 166 167 168 169
                        <f:security.ifAuthenticated>
                            <f:if condition="{notification}">
                                <f:then>
                                    <button class="btn btn-success btn-block" data-rating-type="deactivateNotification" data-rating-extension="{extension.uid}" title="Do not notify me anymore of new extension releases">
                                        <strong><i class="fa fa-bell"></i> Notify me via email on new releases</strong>
                                    </button>
                                </f:then>
                                <f:else>
                                    <button class="btn btn-danger btn-block" data-rating-type="activateNotification" data-rating-extension="{extension.uid}" title="Notify me on new extension releases">
                                        <strong><i class="fa fa-bell-slash"></i> Notify me via email on new releases</strong>
                                    </button>
                                </f:else>
                            </f:if>
                        </f:security.ifAuthenticated>
Thomas Löffler's avatar
Thomas Löffler committed
170 171 172 173 174 175 176 177 178 179 180 181
                        <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
182
                                <i class="fa fa-thumbs-o-up"></i> Donate and Give Kudos
Thomas Löffler's avatar
Thomas Löffler committed
183 184 185
                            </f:link.external>
                        </f:if>

186
                        <div class="alert alert-secondary">
187
                            <f:render partial="ExtensionSingleInfo" arguments="{extension:extension, settings:settings, owner:owner, flattrUrl:flattrUrl, documentationLink:documentationLink, qualityLinkNotBroken:qualityLinkNotBroken, urlToQualityServer:urlToQualityServer}" />
188 189 190
                        </div>
                    </div>
                </div>
191

192
                <f:render partial="InstallationHowTo" arguments="{_all}" />
193

Thomas Löffler's avatar
Thomas Löffler committed
194 195 196 197 198 199
                <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
200

201 202
                <div class="socialshareprivacy"></div>
            </div>
203 204 205
        </f:then>
        <f:else>
            <div class="alert alert-warning">
206
                No public version of this extension available.
207 208 209
            </div>
        </f:else>
    </f:if>
210
</f:section>
211 212

</html>