Version 4.0.13.1
This commit is contained in:
1 parent
f9e857d255
commit
c6a86f0d9b
7517 files changed
+597400
-668041
No files matched your search
@@ -0,0 +1,686 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<javascript app="downloads">
|
||||
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.main.js" javascript_type="controller" javascript_version="100045" javascript_position="1000050"><![CDATA[/**
|
||||
* IPS Social Suite 4
|
||||
* (c) 2013 Invision Power Services - http://www.invisionpower.com
|
||||
*
|
||||
* ips.submit.main.js - Submit controller
|
||||
*
|
||||
* Author: Rikki Tissier
|
||||
*/
|
||||
;( function($, _, undefined){
|
||||
"use strict";
|
||||
|
||||
ips.controller.register('downloads.front.submit.main', {
|
||||
|
||||
_progressbarTimeout: null,
|
||||
_requireScreenshots: false,
|
||||
_bulkUpload: false,
|
||||
_ui: {},
|
||||
_hiddenUploader: false,
|
||||
_overriddenUploader: false,
|
||||
|
||||
initialize: function () {
|
||||
this.on( 'uploadedCountChanged', this.uploadCounter );
|
||||
this.on( 'uploadProgress', this.uploadProgress );
|
||||
this.on( 'fileAdded', this.fileAdded );
|
||||
this.on( 'fileDeleted', this.fileDeleted );
|
||||
this.on( 'click', '[data-action="confirmUrls"]', this.confirmURLs );
|
||||
this.on( 'click', '[data-action="confirmImports"]', this.confirmImports );
|
||||
this.on( 'click', '[data-action="confirmScreenshotUrls"]', this.confirmScreenshots );
|
||||
this.on( 'click', '[data-action="uploadMore"]', this.uploadMore );
|
||||
|
||||
this.setup();
|
||||
},
|
||||
|
||||
/**
|
||||
* Setup method - hides necessary sections of the form
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
setup: function () {
|
||||
var self = this;
|
||||
|
||||
if( this.scope.attr('data-screenshotsReq') ){
|
||||
this._requireScreenshots = true;
|
||||
}
|
||||
|
||||
if( this.scope.attr('data-bulkUpload') ){
|
||||
this._bulkUpload = true;
|
||||
}
|
||||
|
||||
this._ui = {
|
||||
progressBar: this.scope.find('#elDownloadsSubmit_progress'),
|
||||
screenshots: this.scope.find('#elDownloadsSubmit_screenshots'),
|
||||
fileInfo: this.scope.find('#elDownloadsSubmit_otherinfo')
|
||||
};
|
||||
|
||||
|
||||
var hideProgressBar = function () {
|
||||
if( !_.isUndefined( self._ui.progressBar.attr('data-ipsSticky') ) ){
|
||||
self.on( 'stickyInit', function () {
|
||||
self._ui.progressBar.hide();
|
||||
});
|
||||
} else {
|
||||
self._ui.progressBar.hide();
|
||||
}
|
||||
};
|
||||
|
||||
// Are there any existing files?
|
||||
if( !this._hasExistingFiles() ){
|
||||
hideProgressBar();
|
||||
this._ui.screenshots.hide();
|
||||
this._ui.fileInfo.hide();
|
||||
this.scope.find('[data-role="submitForm"]').prop( 'disabled', true );
|
||||
} else {
|
||||
if( !this.scope.find('input[name^="files_existing"]').length ){
|
||||
hideProgressBar();
|
||||
} else {
|
||||
this.scope.find('#elDownloadsSubmit_uploader .ipsAttachment_dropZone').hide();
|
||||
this.scope.find('#elDownloadsSubmit_uploader [data-action="uploadMore"]').show();
|
||||
this._hiddenUploader = true;
|
||||
}
|
||||
|
||||
if( !this._hasExistingScreenshots() && this._requireScreenshots ){
|
||||
this._ui.fileInfo.hide();
|
||||
this.scope.find('[data-role="submitForm"]').prop( 'disabled', true );
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Responds to clicking Confirm in the URLs popup. If there's URLs, we show the next steps
|
||||
*
|
||||
* @param {event} e Event object
|
||||
* @returns {void}
|
||||
*/
|
||||
confirmURLs: function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
var gotURLs = this._confirmMenu( 'url_files', 'elURLFiles' );
|
||||
|
||||
if( gotURLs ){
|
||||
this._doneUploadStep();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Responds to clicking Confirm in the Import Files popup. If there's files, we show the next steps
|
||||
*
|
||||
* @param {event} e Event object
|
||||
* @returns {void}
|
||||
*/
|
||||
confirmImports: function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
var gotImports = this._confirmMenu( 'import_files', 'elImportFiles' );
|
||||
|
||||
if( gotImports ){
|
||||
this._doneUploadStep();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Responds to clicking Confirm in the Import Files popup. If there's files, we show the next steps
|
||||
*
|
||||
* @param {event} e Event object
|
||||
* @returns {void}
|
||||
*/
|
||||
confirmScreenshots: function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
var gotURLs = this._confirmMenu( 'url_screenshots', 'elURLScreenshots' );
|
||||
|
||||
if( gotURLs ){
|
||||
this._doneScreenshotStep();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Responds to clicking the 'Upload more files' button
|
||||
*
|
||||
* @param {event} e Event object
|
||||
* @returns {void}
|
||||
*/
|
||||
uploadMore: function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
this.scope.find('#elDownloadsSubmit_uploader .ipsAttachment_dropZone').show();
|
||||
this.scope.find('#elDownloadsSubmit_uploader [data-action="uploadMore"]').hide();
|
||||
this._hiddenUploader = false;
|
||||
this._overriddenUploader = true;
|
||||
},
|
||||
|
||||
/**
|
||||
* Responds to fileAdded event from the uploader to show the screenshot and/or file information sections
|
||||
*
|
||||
* @param {event} e Event object
|
||||
* @param {object} data Event data object from the uploader
|
||||
* @returns {void}
|
||||
*/
|
||||
fileAdded: function (e, data) {
|
||||
if( !this._bulkUpload ){
|
||||
if( data.uploader == 'files' ){
|
||||
this._doneUploadStep();
|
||||
} else if( data.uploader == 'screenshots' ){
|
||||
this._doneScreenshotStep();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Responds to fileDeleted event from uploader
|
||||
*
|
||||
* @param {event} e Event object
|
||||
* @param {object} data Event data object from the uploader
|
||||
* @returns {void}
|
||||
*/
|
||||
fileDeleted: function (e, data) {
|
||||
if( data.uploader != 'files' ){
|
||||
return;
|
||||
}
|
||||
|
||||
if( data.count === 0 ){
|
||||
this.scope.find( '#elDownloadsSubmit_progress .ipsProgressBar_progress')
|
||||
.attr('data-progress', '0%')
|
||||
.css( {
|
||||
width: '0%'
|
||||
});
|
||||
|
||||
this.scope.find('#elDownloadsSubmit_uploader .ipsAttachment_dropZone').show();
|
||||
this.scope.find('#elDownloadsSubmit_uploader [data-action="uploadMore"]').hide();
|
||||
this._hiddenUploader = false;
|
||||
this._overriddenUploader = true;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Responds to uploadCountChanged event from uploader
|
||||
*
|
||||
* @param {event} e Event object
|
||||
* @param {object} data Event data object from the uploader
|
||||
* @returns {void}
|
||||
*/
|
||||
uploadCounter: function (e, data) {
|
||||
if( data.uploader != 'files' ){
|
||||
return;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Responds to uploadProgress event from uploader, which we use to adjust the main progressbar
|
||||
*
|
||||
* @param {event} e Event object
|
||||
* @param {object} data Event data object from the uploader
|
||||
* @returns {void}
|
||||
*/
|
||||
uploadProgress: function (e, data) {
|
||||
if( data.uploader != 'files' ){
|
||||
return;
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this._showProgress();
|
||||
|
||||
this.scope.find( '#elDownloadsSubmit_progress .ipsProgressBar_progress')
|
||||
.attr('data-progress', data.percent + '%')
|
||||
.css( {
|
||||
width: data.percent + '%'
|
||||
});
|
||||
|
||||
if( data.percent === 100 && !this._progressbarTimeout ){
|
||||
this._progressbarTimeout = setTimeout( function () {
|
||||
self._ui.progressBar.find('.ipsProgressBar').removeClass('ipsProgressBar_animated');
|
||||
self._progressbarTimeout = null;
|
||||
}, 300 );
|
||||
|
||||
// Make the continue button available
|
||||
this.scope.find('[data-role="submitForm"]').prop( 'disabled', false );
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Handles the menus for specifying urls or file paths. If there's values entered, we show a count balloon.
|
||||
*
|
||||
* @param {string} inputName Name of the form fields containing the values
|
||||
* @param {string} elemID ID of the menu trigger button (no #)
|
||||
* @returns {boolean} Returns true if some urls/paths have been entered
|
||||
*/
|
||||
_confirmMenu: function (inputName, elemID) {
|
||||
// Do we have a value?
|
||||
var length = 0;
|
||||
var invalid = 0;
|
||||
|
||||
this.scope.find('input[name^="' + inputName + '"]').each( function () {
|
||||
if( $.trim( $( this ).val() ) ){
|
||||
length++;
|
||||
}
|
||||
|
||||
if( !_.isUndefined( this.checkValidity ) && !this.checkValidity() ){
|
||||
invalid++;
|
||||
}
|
||||
});
|
||||
|
||||
if( !invalid ){
|
||||
this.scope.find( '#' + elemID ).trigger('closeMenu');
|
||||
}
|
||||
|
||||
this.scope.find('#' + elemID + ' [data-role="fileCount"]').text( length );
|
||||
|
||||
if( length ){
|
||||
this.scope.find('#' + elemID + ' [data-role="fileCount"]').show();
|
||||
return true;
|
||||
} else {
|
||||
this.scope.find('#' + elemID + ' [data-role="fileCount"]').hide();
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns true if there are existing files on the form (from upload, url or file path)
|
||||
*
|
||||
* @returns {boolean} Returns true if there are existing files
|
||||
*/
|
||||
_hasExistingFiles: function () {
|
||||
if( this.scope.find('input[name^="files_existing"]').length ){
|
||||
return true;
|
||||
}
|
||||
|
||||
var hasURL = [];
|
||||
var hasImport = [];
|
||||
|
||||
if( this.scope.find('input[name^="url_files"]').length ){
|
||||
hasURL = _.filter( this.scope.find('input[name^="url_files"]'), function (item) {
|
||||
if( $.trim( $( item ).val() ) != '' ){
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
if( this.scope.find('input[name^="import_files"]').length ){
|
||||
hasImport = _.filter( this.scope.find('input[name^="import_files"]'), function (item) {
|
||||
if( $.trim( $( item ).val() ) != '' ){
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
if( hasURL.length || hasImport.length ){
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns true if there are existing screenshots on the form (from upload or url)
|
||||
*
|
||||
* @returns {boolean} Returns true if there are existing screenshots
|
||||
*/
|
||||
_hasExistingScreenshots: function () {
|
||||
if( this.scope.find('input[name^="screenshots_existing"]').length ){
|
||||
return true;
|
||||
}
|
||||
|
||||
var hasURL = [];
|
||||
|
||||
if( this.scope.find('input[name^="url_screenshots"]').length ){
|
||||
hasURL = _.filter( this.scope.find('input[name^="url_screenshots"]'), function (item) {
|
||||
if( $.trim( $( item ).val() ) != '' ){
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
if( hasURL.length ){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
/**
|
||||
* Shows the next relevant steps of the upload process
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
_doneUploadStep: function () {
|
||||
var self = this;
|
||||
|
||||
// Show screenshot step
|
||||
if( this._ui.screenshots.length && !this._ui.screenshots.is(':visible') ){
|
||||
ips.utils.anim.go( 'fadeIn', this._ui.screenshots )
|
||||
.done( function () {
|
||||
$( document ).trigger('contentChange', [ self._ui.screenshots ] );
|
||||
});
|
||||
}
|
||||
|
||||
if( !this._requireScreenshots && !this._ui.fileInfo.is(':visible') ){
|
||||
ips.utils.anim.go( 'fadeIn', this._ui.fileInfo )
|
||||
.done( function () {
|
||||
$( document ).trigger('contentChange', [ self._ui.fileInfo ] );
|
||||
});
|
||||
}
|
||||
|
||||
this.scope.find('[data-role="submitForm"]').prop( 'disabled', false );
|
||||
},
|
||||
|
||||
/**
|
||||
* Shows the next relevant steps of the upload process
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
_doneScreenshotStep: function () {
|
||||
ips.utils.anim.go( 'fadeIn', this._ui.fileInfo );
|
||||
},
|
||||
|
||||
/**
|
||||
* Shows the progress bar and hides the dropzone
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
_showProgress: function () {
|
||||
if( !this._hiddenUploader && !this._overriddenUploader ){
|
||||
this._ui.progressBar.show().find('.ipsProgressBar').addClass('ipsProgressBar_animated');
|
||||
this.scope.find('#elDownloadsSubmit_uploader .ipsAttachment_dropZone').hide();
|
||||
this.scope.find('#elDownloadsSubmit_uploader [data-action="uploadMore"]').show();
|
||||
this._hiddenUploader = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.changeLog.js" javascript_type="controller" javascript_version="100045" javascript_position="1000100"><![CDATA[/**
|
||||
* IPS Social Suite 4
|
||||
* (c) 2013 Invision Power Services - http://www.invisionpower.com
|
||||
*
|
||||
* ips.view.changeLog.js - Changelog controller
|
||||
*
|
||||
* Author: Rikki Tissier
|
||||
*/
|
||||
;( function($, _, undefined){
|
||||
"use strict";
|
||||
|
||||
ips.controller.register('downloads.front.view.changeLog', {
|
||||
|
||||
initialize: function () {
|
||||
this.on( 'menuItemSelected', this.changeVersion );
|
||||
this.setup();
|
||||
|
||||
// Primary event that watches for URL changes
|
||||
History.Adapter.bind( window, 'statechange', _.bind( this.stateChange, this ) );
|
||||
},
|
||||
|
||||
/**
|
||||
* Setup method
|
||||
* Sets an initial state that we can use to go back to the default state
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
setup: function () {
|
||||
// Update page URL
|
||||
History.replaceState( {
|
||||
controller: 'changelog'
|
||||
}, document.title, window.location.href );
|
||||
},
|
||||
|
||||
/**
|
||||
* Updates the version changelog being shown
|
||||
*
|
||||
* @param {event} e Event object
|
||||
* @param {object} data Event data object from the menu
|
||||
* @returns {void}
|
||||
*/
|
||||
changeVersion: function (e, data) {
|
||||
data.originalEvent.preventDefault();
|
||||
|
||||
var self = this;
|
||||
var url = data.menuElem.find('[data-ipsMenuValue="' + data.selectedItemID + '"] > a').attr('href');
|
||||
|
||||
// Update page URL
|
||||
History.pushState( {
|
||||
controller: 'changelog',
|
||||
version: data.selectedItemID
|
||||
}, document.title, url );
|
||||
|
||||
this._loadVersion( url, data.selectedItemID );
|
||||
},
|
||||
|
||||
/**
|
||||
* Event handler for History.js
|
||||
* When the state changes, we locate that menu item based on the version, and then pull
|
||||
* the version string and URL and load it
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
stateChange: function () {
|
||||
var state = History.getState();
|
||||
|
||||
// Other things on the page can change the URL, so make sure this is a changelog url
|
||||
if( state.data.controller != 'changelog' ){
|
||||
return;
|
||||
}
|
||||
|
||||
var item;
|
||||
|
||||
if( state.data.version ){
|
||||
item = $('#elChangelog_menu').find('[data-ipsMenuValue="' + state.data.version + '"]');
|
||||
} else {
|
||||
item = $('#elChangelog_menu').find('[data-ipsMenuValue]').first();
|
||||
}
|
||||
|
||||
this._loadVersion( item.find('a').attr('href'), item.attr('data-ipsMenuValue') );
|
||||
},
|
||||
|
||||
/**
|
||||
* Loads version information
|
||||
*
|
||||
* @param {string} url URL of the version to load
|
||||
* @param {string} versionTitle Title of version being loaded
|
||||
* @returns {void}
|
||||
*/
|
||||
_loadVersion: function (url, versionTitle) {
|
||||
var self = this;
|
||||
|
||||
// Update version
|
||||
this.scope.find('[data-role="versionTitle"]').text( versionTitle );
|
||||
|
||||
// Set height on info area and set to loading
|
||||
this.scope
|
||||
.find('[data-role="changeLogData"]')
|
||||
.css( {
|
||||
height: this.scope.find('[data-role="changeLogData"]').height() + 'px'
|
||||
})
|
||||
.addClass('ipsLoading')
|
||||
.html('');
|
||||
|
||||
// Load the new data
|
||||
ips.getAjax()( url )
|
||||
.done( function (response) {
|
||||
self.scope
|
||||
.find('[data-role="changeLogData"]')
|
||||
.html( response )
|
||||
.removeClass('ipsLoading')
|
||||
.css({
|
||||
height: 'auto'
|
||||
});
|
||||
})
|
||||
.fail( function (jqXHR, textStatus, errorThrown) {
|
||||
window.location = url;
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.download.js" javascript_type="controller" javascript_version="100045" javascript_position="1000100">/**
|
||||
* IPS Social Suite 4
|
||||
* (c) 2013 Invision Power Services - http://www.invisionpower.com
|
||||
*
|
||||
* ips.view.download.js - Download popup controller
|
||||
*
|
||||
* Author: Rikki Tissier
|
||||
*/
|
||||
;( function($, _, undefined){
|
||||
"use strict";
|
||||
|
||||
ips.controller.register('downloads.front.view.download', {
|
||||
|
||||
initialize: function () {
|
||||
this.on( 'click', '[data-action="dialogClose"]', this.closeDialog );
|
||||
this.on( 'click', '[data-action="selectFile"]', this.selectFile );
|
||||
this.on( 'click', '[data-action="download"]', this.doDownload );
|
||||
},
|
||||
|
||||
/**
|
||||
* Agree to the terms and update the display to show the list
|
||||
*
|
||||
* @param {event} e Event object
|
||||
* @returns {void}
|
||||
*/
|
||||
selectFile: function (e) {
|
||||
var url = $( e.currentTarget ).attr('href');
|
||||
var self = this;
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
// Load the download page
|
||||
this.scope
|
||||
.html('')
|
||||
.css({
|
||||
height: '250px'
|
||||
})
|
||||
.addClass('ipsLoading');
|
||||
|
||||
ips.getAjax()( url )
|
||||
.done( function (response) {
|
||||
self.scope
|
||||
.html( response )
|
||||
.css({
|
||||
height: 'auto'
|
||||
})
|
||||
.removeClass('ipsLoading');
|
||||
})
|
||||
.fail( function (jqXHR, textStatus, errorThrown) {
|
||||
window.location = url;
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Event handler for the 'cancel' link
|
||||
*
|
||||
* @param {event} e Event object
|
||||
* @returns {void}
|
||||
*/
|
||||
closeDialog: function (e) {
|
||||
e.preventDefault();
|
||||
this._closeDialog( $( e.currentTarget ).attr('href') );
|
||||
},
|
||||
|
||||
/**
|
||||
* Closes the dialog
|
||||
*
|
||||
* @param {string} href Href to redirect to if not in a dialog
|
||||
* @returns {void}
|
||||
*/
|
||||
_closeDialog: function (href) {
|
||||
if( this.scope.closest('.ipsDialog').length ){
|
||||
this.scope.closest('.ipsDialog').trigger('closeDialog');
|
||||
} else {
|
||||
window.location = href;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Initiate the actual download
|
||||
*
|
||||
* @param {event} e Event object
|
||||
* @returns {void}
|
||||
*/
|
||||
doDownload: function (e) {
|
||||
if ( $( e.currentTarget ).attr('data-wait') ) {
|
||||
e.preventDefault();
|
||||
|
||||
ips.getAjax()( $( e.currentTarget ).attr('href') )
|
||||
.done( function (response) {
|
||||
var secondsRemaining = response.download - response.currentTime;
|
||||
|
||||
$( e.currentTarget )
|
||||
.hide()
|
||||
.siblings()
|
||||
.find('[data-role="downloadCounter"]')
|
||||
.html( secondsRemaining )
|
||||
.end()
|
||||
.end()
|
||||
.siblings('[data-role="downloadCounterContainer"]')
|
||||
.removeClass('ipsHide');
|
||||
|
||||
var interval = setInterval( function () {
|
||||
secondsRemaining--;
|
||||
$( e.currentTarget ).siblings().find('[data-role="downloadCounter"]').html( secondsRemaining );
|
||||
if ( secondsRemaining === 0 ) {
|
||||
clearInterval(interval);
|
||||
window.location = $( e.currentTarget ).attr('href');
|
||||
}
|
||||
}, 1000 );
|
||||
})
|
||||
.fail( function () {
|
||||
window.location = $(e.currentTarget).attr('href');
|
||||
})
|
||||
} else {
|
||||
this._closeDialog( $( e.currentTarget ).attr('href') );
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="downloads" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.submit.js" javascript_type="template" javascript_version="100045" javascript_position="1000150"><![CDATA[/* VIEW TEMPLATES */
|
||||
ips.templates.set('downloads.submit.screenshot', " \
|
||||
<div class='ipsGrid_span3 ipsAttach ipsImageAttach ipsPad_half ipsAreaBackground_light' id='{{id}}' data-role='file' data-fileid='{{id}}' data-fullsizeurl='{{imagesrc}}' data-thumbnailurl='{{thumbnail}}' data-isImage='1'>\
|
||||
<ul class='ipsList_inline ipsImageAttach_controls'>\
|
||||
<li><input type='radio' name='{{field_name}}_primary_screenshot' id='{{field_name}}_primary_screenshot_{{id}}' value='{{id}}' title='{{#lang}}makePrimaryScreenshot{{/lang}}' data-ipsTooltip {{#default}}checked{{/default}}></li>\
|
||||
<li class='ipsPos_right' data-role='deleteFileWrapper'>\
|
||||
<input type='hidden' name='{{field_name}}_keep[{{id}}]' value='1'>\
|
||||
<a href='#' data-role='deleteFile' class='ipsButton ipsButton_verySmall ipsButton_light' data-ipsTooltip title='{{#lang}}removeScreenshot{{/lang}}'><i class='fa fa-trash-o'></i></a>\
|
||||
</li>\
|
||||
</ul>\
|
||||
<label for='{{field_name}}_primary_screenshot_{{id}}' class='ipsCursor_pointer'>\
|
||||
<div class='ipsImageAttach_thumb ipsType_center' data-role='preview' data-grid-ratio='65' data-action='insertFile' {{#thumb}}style='background-image: url( {{thumbnail}} )'{{/thumb}}>\
|
||||
{{#status}}\
|
||||
<span class='ipsImageAttach_status ipsType_light' data-role='status'>{{{status}}}</span>\
|
||||
<span class='ipsAttachment_progress'><span data-role='progressbar'></span></span>\
|
||||
{{/status}}\
|
||||
{{#thumb}}\
|
||||
{{{thumb}}}\
|
||||
{{/thumb}}\
|
||||
</div>\
|
||||
</label>\
|
||||
<h2 class='ipsType_reset ipsAttach_title ipsType_medium' data-role='title'>{{title}}</h2>\
|
||||
<p class='ipsType_light'>{{size}} · <span data-role='status'>{{statusText}}</span></p>\
|
||||
</div>\
|
||||
");
|
||||
|
||||
ips.templates.set('downloads.submit.screenshotWrapper', " \
|
||||
<div class='ipsGrid ipsGrid_collapsePhone' data-ipsGrid data-ipsGrid-minItemSize='150' data-ipsGrid-maxItemSize='250'>{{{content}}}</div>\
|
||||
");]]></file>
|
||||
<order app="global" path="/dev/js//framework/">templates
|
||||
common/ui
|
||||
common/utils
|
||||
common
|
||||
controllers</order>
|
||||
<order app="global" path="/dev/js//library/">underscore
|
||||
jquery
|
||||
mustache
|
||||
jstz
|
||||
Debug.js
|
||||
app.js</order>
|
||||
<order app="global" path="/dev/js//library//jquery">jquery.js
|
||||
jquery.history.js
|
||||
jquery.transform.js</order>
|
||||
<order app="global" path="/dev/js//library//xregexp">xregexp-all.js
|
||||
xregexp-lookbehind.js</order>
|
||||
</javascript>
|
||||
Reference in new issue
Block a user