Show.html 10.8 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 45 46 47 48 49
                        </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>
                        Outdated extension
                        <small class="text-muted">This extension supports none of the currently supported TYPO3 core version</small>
                    </h4>
                </div>
            </f:if>
50 51 52 53 54 55 56 57 58
            <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>
                        Obsolete extension
                        <small class="text-muted">This extension is marked as obsolete and not supported anymore</small>
                    </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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
                <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" />
                                <span itemprop="alternateName">{extension.lastVersion.title}</span>
                                <small class="text-muted">
                                    <br /><span itemprop="name">{extension.extKey}</span> /
                                    <span class="ter-ext-state-{extension.lastVersion.state}">{extension.lastVersion.state}</span>
                                </small>
                            </h1>
                        </header>
                    </div>
                    <div class="col-md-3">
                        <f:if condition="{extension.lastVersion.reviewState} != -1">
                            <f:link.action class="btn btn-primary btn-lg pull-right" 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>
                    </div>
89
                </div>
90

91 92 93 94 95 96
                <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>
97 98 99 100 101 102
                        <f:if condition="{extension.composerName}">
                        <p class="mb-3">
                            <h3>Composer support</h3>
                            <f:render partial="ComposerNameWithClipboard" arguments="{composerName: extension.composerName}" />
                        </p>
                        </f:if>
103 104 105 106 107 108 109 110 111 112 113
                        <f:if condition="{extension.tags}">
                            <h3>Tags</h3>
                            <p class="tags">
                                <f:for each="{extension.tags}" as="tag">
                                    <f:link.page class="btn btn-info mb-1" pageUid="{settings.pages.searchResultsPid}" additionalParams="{tx_solr: {filter: {0: 'tags:{tag.title}'}}}">
                                        <strong>#{tag.title}</strong>
                                    </f:link.page>
                                </f:for>
                            </p>
                            <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>
                        </f:if>
114
                        <h3>
115
                            <f:translate key="last_upload_comment" />
116
                        </h3>
117 118 119 120 121 122 123 124 125 126 127
                        <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">
                                var versionChartData = {extension.downloadsByVersionsAsJson -> f:format.raw()};
                            </script>
                            <div id="versionChart">
128

129 130 131 132
                            </div>
                        </f:if>
                    </div>
                    <div class="col-md-4">
133
                        <f:if condition="{extension.externalManual}">
134
                            <f:then>
135 136
                                <f:link.external class="btn btn-info btn-block" rel="nofollow" uri="{extension.externalManual}" target="_blank">
                                    <i class="fa fa-book"></i> <f:translate key="external_manual" />
137
                                </f:link.external>
138 139
                            </f:then>
                            <f:else>
140 141 142
                                <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
143
                                    </f:link.external>
144 145 146
                                </f:if>
                            </f:else>
                        </f:if>
147 148 149 150 151 152 153 154 155 156
                        <f:if condition="{extension.forgeLink}">
                            <f:link.external class="btn btn-success btn-block" rel="nofollow" uri="{extension.forgeLink}" target="_blank">
                                <i class="fa fa-hand-o-right"></i> Found an issue? Get in contact!
                            </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> Take a look into the code
                            </f:link.external>
                        </f:if>
157 158
                        <f:if condition="{extension.paypalUrl}">
                            <f:link.external class="btn btn-dark btn-block" rel="nofollow" uri="{extension.paypalUrl}" target="_blank">
159
                                <i class="fa fa-thumbs-o-up"></i> Like it? Support it.
160 161
                            </f:link.external>
                        </f:if>
162
                        <div class="alert alert-secondary">
163
                            <f:render partial="ExtensionSingleInfo" arguments="{extension:extension, settings:settings, owner:owner, flattrUrl:flattrUrl, documentationLink:documentationLink, qualityLinkNotBroken:qualityLinkNotBroken, urlToQualityServer:urlToQualityServer}" />
164 165 166
                        </div>
                    </div>
                </div>
167

168
                <f:render partial="InstallationHowTo" arguments="{_all}" />
169

170 171 172 173 174 175 176 177
                <f:if condition="{versionHistory->f:count()} >= 1">
                    <h3>
                        <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>
                </f:if>
178

179 180
                <div class="socialshareprivacy"></div>
            </div>
181 182 183 184 185 186 187
        </f:then>
        <f:else>
            <div class="alert alert-warning">
                <f:translate key="msg.extension_not_found" />
            </div>
        </f:else>
    </f:if>
188
</f:section>
189 190

</html>