9958541d75002b5e831da151f829deebeaeb134d
1 // IIFE for faster access to $ and save $ use
4 $(document
).ready(function() {
5 manageExtensionListing();
6 $("#typo3-extension-configuration-forms").tabs();
8 $('.onClickMaskExtensionManager').click(function() {
9 $('.typo3-extension-manager').mask();
12 $('.dataTables_wrapper .dataTables_filter input').clearable({
14 datatable
.fnFilter('');
18 $('.expandable').expander({
19 expandEffect
: 'slideDown',
20 collapseEffect
: 'slideUp',
21 beforeExpand: function() {
22 $(this).parent().css('z-index', 199);
24 afterCollapse: function() {
25 $(this).parent().css('z-index', 1);
29 $('.t3-button-action-installdistribution').click(function(){
30 $('.typo3-extension-manager').mask();
35 function getUrlVars() {
37 var hashes
= window
.location
.href
.slice(window
.location
.href
.indexOf('?') + 1).split('&');
38 for(var i
= 0; i
< hashes
.length
; i
++) {
39 hash
= hashes
[i
].split('=');
41 vars
[hash
[0]] = hash
[1];
46 function manageExtensionListing() {
47 datatable
= $('#typo3-extension-list').dataTable({
50 "bLengthChange":false,
52 "oLanguage": {"sSearch": TYPO3
.l10n
.localize('extensionList.search')},
54 "fnDrawCallback": bindActions
,
55 "fnCookieCallback": function (sNameFile
, oData
, sExpires
, sPath
) {
56 // append mod.php to cookiePath to avoid sending cookie-data to images etc. without reason
57 return sNameFile
+ "=" + encodeURIComponent($.fn
.dataTableExt
.oApi
._fnJsonString(oData
)) + "; expires=" + sExpires
+"; path=" + sPath
+ "mod.php";
64 { 'sType': 'version' },
65 { 'bSortable': false },
70 var getVars
= getUrlVars();
73 if(datatable
.length
&& getVars
['search']) {
74 datatable
.fnFilter(getVars
['search']);
78 $.fn
.dataTableExt
.oSort
['version-asc'] = function(a
, b
) {
79 var result
= compare(a
,b
);
84 $.fn
.dataTableExt
.oSort
['version-desc'] = function(a
, b
) {
85 var result
= compare(a
,b
);
89 function compare(a
, b
) {
94 var a_components
= a
.split(".");
95 var b_components
= b
.split(".");
97 var len
= Math
.min(a_components
.length
, b_components
.length
);
99 // loop while the components are equal
100 for (var i
= 0; i
< len
; i
++) {
102 if (parseInt(a_components
[i
]) > parseInt(b_components
[i
])) {
107 if (parseInt(a_components
[i
]) < parseInt(b_components
[i
])) {
112 // If one's a prefix of the other, the longer one is greater.
113 if (a_components
.length
> b_components
.length
) {
117 if (a_components
.length
< b_components
.length
) {
120 // Otherwise they are the same.
124 function bindActions() {
125 $('.removeExtension').not('.transformed').each(function() {
126 $(this).data('href', $(this).attr('href'));
127 $(this).attr('href', '#');
128 $(this).addClass('transformed');
129 $(this).click(function() {
130 TYPO3
.Dialog
.QuestionDialog({
131 title
: TYPO3
.l10n
.localize('extensionList.removalConfirmation.title'),
132 msg
: TYPO3
.l10n
.localize('extensionList.removalConfirmation.question'),
133 url
: $(this).data('href'),
134 fn: function(button
, dummy
, dialog
) {
135 if (button
== 'yes') {
136 $('.typo3-extension-manager').mask();
139 success: function() {
143 $('.typo3-extension-manager').unmask();
152 $('.t3-icon-system-extension-update').parent().each(function() {
153 $(this).data('href', $(this).attr('href'));
154 $(this).attr('href', '#');
155 $(this).addClass('transformed');
156 $(this).click(function() {
157 $('.typo3-extension-manager').mask();
159 url
: $(this).data('href'),
161 success
: updateExtension
167 function updateExtension(data
) {
168 var message
= '<h1>' + TYPO3
.l10n
.localize('extensionList.updateConfirmation.title') + '</h1>';
169 message
+= '<h2>' + TYPO3
.l10n
.localize('extensionList.updateConfirmation.message') + '</h2>';
170 $.each(data
.updateComments
, function(version
, comment
) {
171 message
+= '<h3>' + version
+ '</h3>';
172 message
+= '<div>' + comment
+ '</div>';
175 TYPO3
.Dialog
.QuestionDialog({
176 title
: TYPO3
.l10n
.localize('extensionList.updateConfirmation.questionVersionComments'),
180 fn: function(button
, dummy
, dialog
) {
181 if (button
== 'yes') {
185 success: function(data
) {
186 if (data
.hasErrors
) {
187 top
.TYPO3
.Flashmessage
.display(
188 top
.TYPO3
.Severity
.error
,
189 TYPO3
.l10n
.localize('downloadExtension.updateExtension.error'),
194 top
.TYPO3
.Flashmessage
.display(
195 top
.TYPO3
.Severity
.info
,
196 TYPO3
.l10n
.localize('extensionList.updateFlashMessage.title'),
197 TYPO3
.l10n
.localize('extensionList.updateFlashMessage.message').replace(/\{0\}/g, data
.extension
),
201 $('.typo3-extension-manager').unmask();
203 error: function(jqXHR
, textStatus
, errorThrown
) {
204 // Create an error message with diagnosis info.
205 var errorMessage
= textStatus
+ '(' + errorThrown
+ '): ' + jqXHR
.responseText
;
207 top
.TYPO3
.Flashmessage
.display(
208 top
.TYPO3
.Severity
.error
,
209 TYPO3
.l10n
.localize('downloadExtension.updateExtension.error'),
213 $('.typo3-extension-manager').unmask();
217 $('.typo3-extension-manager').unmask();