-
0%
-
-
-
- Uploading: | |
-
-
- Progress: | |
-
-
- Time elapsed: | |
-
-
- Time remaining: | |
-
-
- Cancel |
-
-
+
+
-
+
-
-
-
-
+
@@ -313,6 +281,7 @@
multiple : '
',
prefix : '
',
field : '
',
+ thumb_format: '
',
urls : '
',
names : '
',
sizes : '
',
Index: admin_templates/incs/style_template.css
===================================================================
--- admin_templates/incs/style_template.css (revision 13635)
+++ admin_templates/incs/style_template.css (working copy)
@@ -512,45 +512,30 @@
border-collapse: separate
}
-
/* Uploader */
-
-.uploader-main {
- position: absolute;
- display: none;
- z-index: 10;
- border: 1px solid #777;
- padding: 10px;
- width: 350px;
- height: 120px;
- overflow: hidden;
- background-color: #fff;
-}
-
-.uploader-percent {
- width: 100%;
- padding-top: 3px;
- text-align: center;
- position: relative;
- z-index: 20;
+.uploader-queue .progress-container {
+ margin-right: 5px;
+ margin-top: 2px;
float: left;
- font-weight: bold;
}
-.uploader-left {
- width: 100%;
+.uploader-queue .progress-empty {
+ width: 150px;
+ height: 9px;
border: 1px solid black;
- height: 20px;
- background: #fff url('@@base_url@@/core/admin_templates/img/progress_left.gif');
+ background: url('@@base_url@@/core/admin_templates/img/progress_left.gif') repeat-x;
}
-.uploader-done {
- width: 0%;
- background-color: green;
- height: 20px;
- background: #4A92CE url('@@base_url@@/core/admin_templates/img/progress_done.gif');
+.uploader-queue .progress-full {
+ height: 9px;
+ background: url('@@base_url@@/core/admin_templates/img/progress_done.gif');
}
+.uploader-queue .thumbnail {
+ margin-bottom: 2px;
+ border: 1px solid black;
+ background-color: grey;
+}
/* To be sorted */
span#category_path, span#category_path a {
Index: admin_templates/js/forms.js
===================================================================
--- admin_templates/js/forms.js (revision 13557)
+++ admin_templates/js/forms.js (working copy)
@@ -291,8 +291,6 @@
// alert('h is: '+h+' min height is '+this.MinHeight+' MinControlsHeight is '+this.MinControlsHeight+' -> '+split+' to split between '+count);
// print_pre(this.Controls)
-
- IterateUploaders('syncBrowseButton');
}
Form.ResetHeights = function()
Index: admin_templates/js/script.js
===================================================================
--- admin_templates/js/script.js (revision 13557)
+++ admin_templates/js/script.js (working copy)
@@ -161,11 +161,11 @@
var $form = document.getElementById($form_name);
- if (typeof $form.onsubmit == 'function') {
+ if ($.isFunction($form.onsubmit)) {
$form.onsubmit();
}
- $form.submit();
+ $($form).submit();
$form.target = '';
set_hidden_field('t', t);
Index: admin_templates/js/uploader/upload_manager.js
===================================================================
--- admin_templates/js/uploader/upload_manager.js (revision 13557)
+++ admin_templates/js/uploader/upload_manager.js (working copy)
@@ -1,5 +1,6 @@
function UploadsManager() {
- addLoadEvent(
+
+ $(document).ready(
function() {
UploadsManager._initAll();
}
@@ -14,49 +15,13 @@
UploadsManager._debugMode = false;
UploadsManager._Uploaders = {};
-UploadsManager._singleUpload = true;
-/* ==== Public Attributes ==== */
-UploadsManager.useToolbar = true;
-UploadsManager.formContainerId = '';
-UploadsManager.useTransparency = true;
-UploadsManager.uploadCancelled = false;
-
/* ==== Private methods ==== */
-UploadsManager.setScrollEvents = function() {
- var $scroll_container = this._getScrollContainer();
-
- addEvent(
- $scroll_container,
- 'scroll',
- function(ev) {
- UploadsManager.iterate('syncBrowseButton');
- }
- )
-}
-
UploadsManager._nextFlashId = function() {
this._nextId++;
return 'uploaderflash' + this._nextId;
}
-UploadsManager._getFormContainer = function() {
- if (UploadsManager.formContainerId) {
- return document.getElementById(UploadsManager.formContainerId);
- }
-
- return Form.Div;
-}
-
-
-UploadsManager._getScrollContainer = function() {
- if (UploadsManager.formContainerId) {
- return document.body;
- }
-
- return document.getElementById(Form.Div.id + '_container');
-}
-
UploadsManager._initAll = function() {
this._createHooks();
@@ -120,36 +85,19 @@
}
UploadsManager._createHooks = function () {
- if (typeof Application != 'undefined') {
- Application.setHook(
- 'm:OnAfterFormInit',
- function () {
- UploadsManager.setScrollEvents();
- }
- );
- }
+ var $me = this;
- // hooking to standard toolbar select button to peform auto-upload when Save is clicked
- if (!UploadsManager.useToolbar || !isset(a_toolbar)) {
- return ;
- }
+ $('#' + $form_name).submit(
+ function ($e) {
+ if ($me._hasQueue()) {
+ submitted = false;
+ alert('File upload is in progress. Please cancel the upload or wait until it\'s completed.');
- if (a_toolbar.ButtonExists('select')) {
- var old_onclick = a_toolbar.Buttons['select'].onClick;
- a_toolbar.Buttons['select'].onClick = function() {
- UploadsManager.UploadAll(
- function() {
- if (UploadsManager._debugMode) {
- if (!confirm('Proceed with form submitting?')) {
- return ;
- }
- }
-
- old_onclick();
- }
- );
+ return false;
+ }
}
- }
+
+ );
}
/* ==== Public methods ==== */
@@ -160,12 +108,11 @@
UploadsManager.RemoveUploader = function(id) {
this._Uploaders[id].remove();
delete this._Uploaders[id];
- this.iterate('syncBrowseButton');
}
UploadsManager.DeleteFile = function(uploader_id, fname, confirmed) {
- if (!confirmed && !confirm('Are you sure you want to delete this file?')) {
- return;
+ if (!confirmed && !confirm('Are you sure you want to delete "' + fname + '" file?')) {
+ return false;
}
var $uploader = this._Uploaders[uploader_id];
@@ -184,10 +131,11 @@
},
fname, $uploader
);
+
+ return true;
}
UploadsManager.StartUpload = function(id) {
- UploadsManager._singleUpload = true;
this._Uploaders[id].startUpload();
}
@@ -195,55 +143,8 @@
this._Uploaders[id].callFlash('CancelUpload', [file_id]);
}
-UploadsManager.UploadAll = function(onAllUploaded) {
- if (!this._hasQueue()) {
- onAllUploaded();
- return ;
- }
-
- UploadsManager._singleUpload = false;
- for (var i in this._Uploaders) {
- // could raise problems, when simultanious uploads from diffrent uploaders are made
- this._Uploaders[i].startUpload();
- }
-
- this.OnAllUploaded = onAllUploaded;
-}
-
UploadsManager.UploadQueueComplete = function($uploader) {
- var $all_uploaded = true; // all queued files were uploaded
- var $all_processed = true; // all queued files were processed (uploaded OR cancelled)
- for (var i in this._Uploaders) {
- var $queue_owner = this._Uploaders[i].id == $uploader.id;
- if (UploadsManager._singleUpload && !$queue_owner) {
- // count only current uploader when single upload is made
- continue;
- }
-
- if ($queue_owner) {
- this._Uploaders[i].finalizeUpload();
- }
-
- var $empty_queue = !this._Uploaders[i].hasQueue();
-
- $all_uploaded = $all_uploaded && $empty_queue;
- $all_processed = $all_processed && ($empty_queue || this._Uploaders[i].uploadCancelled);
- }
-
- if ($all_processed) {
- // enable all browse button, when upload is totally completed or cancelled
- UploadsManager.iterate('disableBrowse', false);
- }
-
- if (UploadsManager.useTransparency && $all_processed) {
- // remove transparency, when all uploaders are done
- Request.setOpacity(100, UploadsManager._getFormContainer());
- }
-
- if ($all_uploaded && isset(this.OnAllUploaded) && !this.uploadCancelled) {
- this.OnAllUploaded();
- }
}
UploadsManager.CancelUpload = function(id) {
@@ -313,21 +214,25 @@
// delete file added
this.files_count++;
this.files.push(file);
- this.total += file.size;
+
if (this.files[0].uploaded) {
UploadsManager.DeleteFile(UploadsManager._getUploader(file).id, this.files[0].name, true);
}
else {
this.callFlash('CancelUpload', [this.files[0].id]);
}
+
+ this.startUpload();
}
}
else {
// new file will not exceed allowed file number
this.files_count++;
this.files.push(file);
- this.total += file.size;
+
+ this.startUpload();
}
+
this.updateInfo();
}
)
Index: admin_templates/js/uploader/uploader.js
===================================================================
--- admin_templates/js/uploader/uploader.js (revision 13557)
+++ admin_templates/js/uploader/uploader.js (working copy)
@@ -4,7 +4,6 @@
function Uploader(id, params) {
this.id = id;
- this._moved = false; // flash was moved outside scroll container
// normalize params
if (isNaN(parseInt(params.multiple))) {
@@ -23,12 +22,10 @@
this.files_count = 0;
this.files = new Array();
- this.deleted = new Array()
+ this.deleted = new Array();
this.uploadURL = params.uploadURL;
this.deleteURL = params.deleteURL;
-
- this._resetCounters();
}
/* ==== Private methods ==== */
@@ -45,6 +42,7 @@
allowedFiletypesDescription : 'All Files',
allowedFilesize : 0, // Default zero means "unlimited"
multiple : 0,
+ thumb_format: '',
fileQueueLimit : 0,
buttonImageURL : '',
buttonWidth : 1,
@@ -81,6 +79,7 @@
Uploader.prototype._prepareFiles = function() {
var ids = '';
var names = '';
+
for (var f = 0; f < this.files.length; f++) {
if (isset(this.files[f].uploaded) && !isset(this.files[f].temp)) {
continue;
@@ -92,38 +91,24 @@
ids = ids.replace(/\|$/, '', ids);
names = names.replace(/\|$/, '', names);
+
document.getElementById(this.id+'[tmp_ids]').value = ids;
document.getElementById(this.id+'[tmp_names]').value = names;
document.getElementById(this.id+'[tmp_deleted]').value = this.deleted.join('|');
}
-Uploader.prototype._getMicroTime = function() {
- var $now = new Date();
- return Math.round($now.getTime() / 1000); // because miliseconds are returned too
-}
+Uploader.prototype._formatSize = function (bytes) {
+ var kb = Math.round(bytes / 1024);
-Uploader.prototype._getEstimatedTime = function() {
- return Math.ceil((100 - this.ProgressPercent) * this.ProgressTime / this.ProgressPercent);
-}
+ if (kb < 1024) {
+ return kb + ' KB';
+ }
-Uploader.prototype._formatTime = function ($seconds) {
- $seconds = parseInt($seconds);
+ var mb = Math.round(kb / 1024 * 100) / 100;
- var $minutes = Math.floor($seconds / 60);
- if ($minutes < 10) $minutes = '0' + $minutes;
- $seconds = $seconds % 60;
- if ($seconds < 10) $seconds = '0' + $seconds;
-
- return $minutes + ':' + $seconds;
+ return mb + ' MB';
}
-Uploader.prototype._formatSize = function (bytes) {
- var kb = Math.round(bytes / 1024);
- if (kb < 1024) return kb+'Kb';
- var mb = Math.round(kb / 1024 * 100)/100;
- return mb+'Mb';
-}
-
Uploader.prototype._executeNextEvent = function () {
var f = this._eventQueue ? this._eventQueue.shift() : null;
if (typeof(f) === 'function') {
@@ -133,34 +118,8 @@
/* ==== Public methods ==== */
Uploader.prototype.init = function() {
- if (this.params.buttonPlaceholderId !== false) {
- // use given container
- var holder = document.getElementById(this.params.buttonPlaceholderId);
- }
- else {
- // create container on the fly
- var holder = document.createElement('DIV');
- document.body.appendChild(holder);
- }
-
- if (UploadsManager.useTransparency) {
- document.getElementById($form_name).style.display = 'block';
- }
-
- // moving out progress div to overcome loosing of flash object after setting opacity
- this.div = document.getElementById(this.id+'_progress');
- var clone = this.div.cloneNode(true);
- this.div.parentNode.removeChild(this.div)
- this.div = document.body.appendChild(clone);
this.IconPath = this.params.IconPath ? this.params.IconPath : '../admin_templates/img/browser/icons';
- this.filename = document.getElementById(this.id+'_progress_filename');
- this.progress = document.getElementById(this.id+'_progress_progress');
- this.elapsed = document.getElementById(this.id+'_progress_elapsed');
- this.remaining = document.getElementById(this.id+'_progress_remaining');
- this.percent = document.getElementById(this.id+'_percent');
- this.done = document.getElementById(this.id+'_done');
-
// initialize flash object
this.flash_id = UploadsManager._nextFlashId();
@@ -184,7 +143,7 @@
this.swf.addParam('wmode', escape(this.params.wmode));
this.swf.addVariable('movieName', escape(this.flash_id));
- this.swf.addVariable('fileUploadLimit', escape(this.params.multiple));
+ this.swf.addVariable('fileUploadLimit', 0);
this.swf.addVariable('fileQueueLimit', escape(this.params.fileQueueLimit));
this.swf.addVariable('fileSizeLimit', escape(this.params.allowedFilesize)); // in kilobytes
this.swf.addVariable('fileTypes', escape(this.params.allowedFiletypes));
@@ -207,62 +166,50 @@
this.swf.addVariable('debugEnabled', escape('true')); // flash var
}
- if (this.params.buttonPlaceholderId === false || !UploadsManager.useTransparency) {
- // only write flash, when button placeholder is not used
- this.swf.write(holder);
- this.flash = document.getElementById(this.flash_id);
- }
+ var $me = this;
+ Application.setHook(
+ 'm:OnAfterFormInit',
+ function () {
+ $me.renderBrowseButton();
+ }
+ )
+
if (this.params.urls != '') {
var urls = this.params.urls.split('|');
var names = this.params.names.split('|');
var sizes = this.params.sizes.split('|');
+
for (var i = 0; i < urls.length; i++) {
var a_file = {
id : names[i],
name : names[i],
url : urls[i],
size: sizes[i],
- uploaded : 1
- }
- this.files.push(a_file)
+ uploaded : 1,
+ progress: 100
+ };
+
+ this.files.push(a_file);
this.files_count++;
}
+
this.updateInfo();
}
}
-Uploader.prototype.moveOutside = function() {
- // move flash outside scroll_container, but keeps it's position on screen
- if (!UploadsManager.useTransparency || this._moved) {
- // moving only needed when transparency us used (e.g. in admin)
- return ;
- }
+Uploader.prototype.renderBrowseButton = function() {
+ var holder = document.getElementById(this.params.buttonPlaceholderId);
+ this.swf.write(holder);
- var $new_container = document.createElement('DIV');
- $new_container.id = this.params.buttonPlaceholderId + '_outside';
- $new_container.style.position = 'absolute';
-
- var $old_container = document.getElementById(this.params.buttonPlaceholderId);
- $new_container.style.top = getRealTop($old_container) + 'px';
- $new_container.style.left = getRealLeft($old_container) + 'px';
-
- var $holder_dimensions = getDimensions($old_container);
- $new_container.style.width = $holder_dimensions.innerWidth + 'px';
- $new_container.style.height = $holder_dimensions.innerHeight + 'px';
-
- document.body.appendChild($new_container);
-
- this.swf.write($new_container); // write flash outside scroll_container
- this.flash = document.getElementById(this.flash_id); // fix reference to flash object
-
- this._moved = true;
+ this.flash = document.getElementById(this.flash_id);
}
Uploader.prototype.remove = function() {
- var id = this._moved ? this.params.buttonPlaceholderId + '_outside' : this.params.buttonPlaceholderId;
+ var id = this.params.buttonPlaceholderId;
var obj = document.getElementById(id);
+
if (obj/* && obj.nodeName == "OBJECT"*/) {
var u = navigator.userAgent.toLowerCase();
var p = navigator.platform.toLowerCase();
@@ -298,95 +245,90 @@
}
}
-Uploader.prototype.syncBrowseButton = function() {
- // when flash is moved outside scroll_container, keeps it's position on screen during scroll operations
- if (!this._moved) {
- return ;
- }
-
- var $scroll_container = UploadsManager._getScrollContainer();
- var $scroll_container_top = getRealTop($scroll_container);
- var $scroll_container_left = getRealLeft($scroll_container);
-
- var $scroll_top = $scroll_container.scrollTop;
- var $scroll_left = $scroll_container.scrollLeft;
-
- var $old_container = document.getElementById(this.params.buttonPlaceholderId);
- var $new_container = document.getElementById(this.params.buttonPlaceholderId + '_outside');
-
- var $old_container_top = getRealTop($old_container);
- var $old_container_left = getRealLeft($old_container);
-
- if ($scroll_container_top <= $old_container_top - $scroll_top) {
- // prevents moving outside $scroll_container
- $new_container.style.top = ($old_container_top - $scroll_top) + 'px';
- }
- else {
- // move browse button outside visible area
- $new_container.style.top = -this.params.buttonHeight + 'px';
- }
-
- if ($scroll_container_left <= $old_container_left - $scroll_left) {
- // prevents moving outside $scroll_container
- $new_container.style.left = ($old_container_left - $scroll_left) + 'px';
- }
- else {
- // move browse button outside visible area
- $new_container.style.left = -this.params.buttonWidth + 'px';
- }
+Uploader.prototype.isImage = function($file_extension) {
+ return $file_extension.match(/^(bmp|gif|jpg|jpeg|png)$/)
}
Uploader.prototype.updateInfo = function() {
var $o = '';
var $icon = '';
var $filename = '';
+ var $file_label = '';
var $delete_code = '';
+ var $checkbox_code = '';
+ var $cancel_code = '';
+ var $empty_progress_bar = '';
for (var f = 0; f < this.files.length; f++) {
this.files[f].name.match(/\.([^.]*)$/);
var ext = RegExp.$1.toLowerCase();
+
$icon = ext.match(/^(ai|avi|bmp|cs|dll|doc|dot|exe|fla|gif|htm|html|jpg|js|mdb|mp3|pdf|ppt|rdp|swf|swt|txt|vsd|xls|xml|zip)$/) ? ext : 'default.icon';
- $icon = '

';
+ var $icon_html = '

';
if (isset(this.files[f].uploaded)) {
- $filename = '
' + this.files[f].name + ' (' + this._formatSize(this.files[f].size) + ')';
$delete_code = 'UploadsManager.DeleteFile(\'' + this.id + '\', \'' + this.files[f].name + '\')';
+ $checkbox_code = '
';
+ $file_label = this.files[f].name + ' (' + this._formatSize(this.files[f].size) + ')';
+
+ if ((this.params.thumb_format.length > 0) && this.isImage(ext)) {
+ $icon_html = '

';
+ }
+
+ $filename = '
' + $file_label + '';
+ $cancel_code = $empty_progress_bar = '';
}
else {
$filename = this.files[f].name + ' (' + this._formatSize(this.files[f].size) + ')';
$delete_code = 'UploadsManager.CancelFile(\'' + UploadsManager._getUploader(this.files[f]).id + '\', \'' + this.files[f].id + '\')';
+ $checkbox_code = '';
+ $cancel_code = '
Cancel';
+ $empty_progress_bar = '
';
}
- $o += '
' + $icon + ' | ' + $filename + ' [Delete] |
';
+ $o += '
' + $checkbox_code + ' | ' + $icon_html + ' | ' + $filename + ' | ' + $empty_progress_bar + ' ' + $cancel_code + ' |
';
}
- document.getElementById(this.id+'_queueinfo').innerHTML = '
';
+ var $queue_container = document.getElementById(this.id + '_queueinfo');
+
+ $queue_container.innerHTML = '
';
+ $queue_container.style.marginTop = this.files.length > 0 ? '8px' : '';
+
+ $('img.thumbnail-image').each(
+ function () {
+ var $me = $(this);
+
+ var $thumb_image = new Image();
+ $thumb_image.src = $me.attr('large_src');
+
+ $($thumb_image).load (
+ function ($e) {
+ $me.attr('src', $thumb_image.src).addClass('thumbnail');
+ }
+ );
+ }
+ );
+
this._prepareFiles();
+}
- // sync position of all uploaders below current, because file queue height change will not affect their positions
- UploadsManager.iterate('syncBrowseButton', 'timeout:0');
+Uploader.prototype.updateProgressOnly = function ($file_index) {
+ var $progress_code = '
';
+
+ $('#' + this.files[$file_index].id + '_progress').html($progress_code);
}
Uploader.prototype.removeFile = function (file) {
var n_files = new Array();
var count = 0;
- var $new_total = 0;
for (var f = 0; f < this.files.length; f++) {
if (this.files[f].id != file.id && this.files[f].name != file.id) {
n_files.push(this.files[f]);
- if (!isset(this.files[f].uploaded)) {
- $new_total += file.size;
- }
count++;
}
}
- if (this.StartTime == 0) {
- // don't update total during upload, because that breaks progress bar
- this.total = $new_total;
- }
-
this.files = n_files;
this.files_count = count;
this.updateInfo();
@@ -405,123 +347,80 @@
}
Uploader.prototype.startUpload = function() {
- UploadsManager.uploadCancelled = this.uploadCancelled = false;
+ this.uploadCancelled = false;
if (!this.hasQueue()) {
return;
}
- if (UploadsManager.useTransparency) {
- Request.setOpacity(30, UploadsManager._getFormContainer());
- }
-
- if (!document.all) {
- var $winW = window.innerWidth;
- var $winH = window.innerHeight;
- }
- else {
- var $winW = window.document.body.offsetWidth;
- var $winH = window.document.body.offsetHeight;
- }
-
- var left = Math.round(($winW - 350)/2)+'px';
- var top = Math.round(($winH - 110)/2)+'px';
-
- this.div.style.top = top;
- this.div.style.left = left;
- this.div.style.display = 'block';
-
- if (UploadsManager.useTransparency) {
- Request.setOpacity(100, this.div);
- }
-
- this.StartTime = this._getMicroTime();
- this.ProgressPercent = 0; // progress percent
- this.ProgressTime = new Array();
-
- this.uploaded = 0;
- this.total = 0;
- for (var f = 0; f < this.files.length; f++) {
- if (isset(this.files[f].uploaded)) {
- // get total bytes of non-uploaded files
- continue;
- }
- this.total += this.files[f].size;
- }
-
this.callFlash('StartUpload');
}
Uploader.prototype.cancelUpload = function() {
this.callFlash('StopUpload');
-
var $stats = this.callFlash('GetStats');
+
while ($stats.files_queued > 0) {
this.callFlash('CancelUpload');
-
$stats = this.callFlash('GetStats');
}
- UploadsManager.uploadCancelled = this.uploadCancelled = true;
+ this.uploadCancelled = true;
}
Uploader.prototype.UploadFileStart = function(file) {
- this.filename.innerHTML = file.name;
+ var $file_index = this.getFileIndex(file);
+ this.files[$file_index].progress = 0;
+ this.updateProgressOnly($file_index);
this.callFlash('AddFileParam', [file.id, 'field', this.params.field]);
this.callFlash('AddFileParam', [file.id, 'id', file.id]);
this.callFlash('AddFileParam', [file.id, 'flashsid', this.params.flashsid]);
- UploadsManager.iterate('disableBrowse', true); // disable all "Browse" buttons (not just for current uploader)!
-
// we can prevent user from adding any files here :)
this.callFlash('ReturnUploadStart', [true]);
}
Uploader.prototype.UploadProgress = function(file, bytesLoaded, bytesTotal) {
- this.cur_file_uploaded = bytesLoaded;
- var uploaded = this.uploaded + this.cur_file_uploaded;
- this.ProgressTime = this._getMicroTime() - this.StartTime;
-
- var speed = 0;
- if (this.ProgressTime > 0) {
- speed = Math.round(uploaded / this.ProgressTime * 100) / 100;
- }
-
- this.progress.innerHTML = this._formatSize(uploaded) + ' / ' + this._formatSize(this.total) + ' (' + this._formatSize(speed) + '/s)';
- this.ProgressPercent = Math.round(uploaded / this.total * 100);
- this.done.style.width = this.ProgressPercent + '%';
- this.percent.innerHTML = this.ProgressPercent + '%';
-
- this.elapsed.innerHTML = this._formatTime(this.ProgressTime );
- this.remaining.innerHTML = this._formatTime( this._getEstimatedTime() );
+ var $file_index = this.getFileIndex(file);
+ this.files[$file_index].progress = Math.round(bytesLoaded / bytesTotal * 100);
+ this.updateProgressOnly($file_index);
}
Uploader.prototype.UploadFileComplete = function(file) {
- this.uploaded += this.cur_file_uploaded;
- for (var f = 0; f < this.files.length; f++) {
- if (this.files[f].id == file.id) {
- this.files[f].uploaded = 1;
- this.files[f].temp = 1;
- this.files[f].url = this.params.tmp_url.replace('#ID#', file.id).replace('#FILE#', file.name).replace('#FIELD#', this.params.field);
- }
+ var $file_index = this.getFileIndex(file);
+
+ if ($file_index !== false) {
+ // in case if file upload was cancelled, then no info here
+ this.files[$file_index].uploaded = 1;
+ this.files[$file_index].progress = 100;
+ this.files[$file_index].temp = 1;
+ this.files[$file_index].url = this.params.tmp_url.replace('#ID#', file.id).replace('#FILE#', file.name).replace('#FIELD#', this.params.field);
}
+
this.updateInfo();
// upload next file in queue
var $stats = this.callFlash('GetStats');
- if ($stats.files_queued > 0 && !UploadsManager.uploadCancelled) {
+
+ if ($stats.files_queued > 0) {
this.callFlash('StartUpload');
- } else {
- // all files in queue are uploaded OR upload was cancelled globally
- if (UploadsManager.uploadCancelled) {
- // when upload was cancelled globally -> cancel it for any other uploader
- this.cancelUpload();
- }
+ }
+ else {
UploadsManager.UploadQueueComplete(this);
}
}
+Uploader.prototype.getFileIndex = function(file) {
+ for (var f = 0; f < this.files.length; f++) {
+ if (this.files[f].id == file.id) {
+ return f;
+ }
+ }
+
+ return false;
+}
+
Uploader.prototype.queueEvent = function (function_body) {
// Warning: Don't call this.debug inside here or you'll create an infinite loop
var self = this;
@@ -598,32 +497,17 @@
};
Uploader.prototype.onFlashReady = function() {
- this.disableBrowse(false);
- UploadsManager.iterate('syncBrowseButton');
-}
+ var $me = this;
-Uploader.prototype.disableBrowse = function($disabled) {
- if ($disabled === undefined) {
- $disabled = true;
- }
-
this.queueEvent(
function() {
- this.callFlash('SetButtonDisabled', [$disabled]);
+ setTimeout(
+ function () {
+ // enable upload button, when flash is fully loaded
+ $me.callFlash('SetButtonDisabled', [false]);
+ }, 0
+ )
+
}
);
}
-
-Uploader.prototype._resetCounters = function() {
- this.StartTime = 0; // time, when upload was started
- this.ProgressPercent = 0; // upload progress in percents
- this.ProgressTime = 0; // flash upload process callback times
- this.total = 0; // total bytes to upload (from all queued files)
- this.uploaded = 0; // total uploaded bytes (from all queued files)
-}
-
-Uploader.prototype.finalizeUpload = function() {
- // hide progress bar only of uploader, that completed it's queue
- this.div.style.display = 'none';
- this._resetCounters();
-}
\ No newline at end of file
Index: admin_templates/swfupload.swf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: install/install_data.sql
===================================================================
--- install/install_data.sql (revision 13635)
+++ install/install_data.sql (working copy)
@@ -673,7 +673,7 @@
INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:skins.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:skins.delete', 11, 1, 1, 0);
-INSERT INTO Skins VALUES(DEFAULT, 'Default', '/* General elements */\r\n\r\nhtml {\r\n height: 100%;\r\n}\r\n\r\nbody {\r\n font-family: verdana,arial,helvetica,sans-serif;\r\n color: #000000;\r\n overflow-x: auto; overflow-y: auto;\r\n margin: 0px 0px 0px 0px;\r\n text-decoration: none;\r\n}\r\n\r\nbody, td {\r\n /* fix for Firefox, when font-size was not inherited in table cells */\r\n font-size: 9pt;\r\n}\r\n\r\na {\r\n color: #006699;\r\n text-decoration: none;\r\n}\r\n\r\na:hover {\r\n color: #009ff0;\r\n text-decoration: none;\r\n}\r\n\r\nform {\r\n display: inline;\r\n}\r\n\r\nimg { border: 0px; }\r\n\r\nbody.height-100 {\r\n height: 100%;\r\n}\r\n\r\nbody.regular-body {\r\n margin: 0px 10px 5px 10px;\r\n color: #000000;\r\n background-color: @@SectionBgColor@@;\r\n}\r\n\r\nbody.edit-popup {\r\n margin: 0px 0px 0px 0px;\r\n}\r\n\r\ntable.collapsed {\r\n border-collapse: collapse;\r\n}\r\n\r\n.bordered, table.bordered, .bordered-no-bottom {\r\n border: 1px solid #000000;\r\n border-collapse: collapse;\r\n}\r\n\r\n.bordered-no-bottom {\r\n border-bottom: none;\r\n}\r\n\r\n.login-table td {\r\n padding: 1px;\r\n}\r\n\r\n.disabled {\r\n background-color: #ebebeb;\r\n}\r\n\r\n/* Head frame */\r\ntable.head-table {\r\n background: url(''@@base_url@@/core/admin_templates/img/top_frame/right_background.png'') top right @@HeadBgColor@@ no-repeat;\r\n}\r\n\r\n.head-table tr td, .head-table tr td a {\r\n color: @@HeadColor@@\r\n}\r\n\r\ndiv#extra_toolbar td.button-active {\r\n background: url(''@@base_url@@/core/admin_templates/img/top_frame/toolbar_button_background.gif'') bottom left repeat-x;\r\n height: 22px;\r\n}\r\n\r\ndiv#extra_toolbar td.button-active a {\r\n color: black;\r\n text-decoration: none;\r\n}\r\n\r\ntd.kx-block-header, .head-table tr td.kx-block-header{\r\n color: @@HeadBarColor@@;\r\n background: url(''@@base_url@@/core/admin_templates/img/top_frame/toolbar_background.gif'') repeat-x top left;\r\n /*background-color: @@HeadBarBgColor@@;*/\r\n padding-left: 7px;\r\n padding-right: 7px;\r\n}\r\n\r\na.kx-header-link {\r\n text-decoration: underline;\r\n font-weight: bold;\r\n color: #0080C8;\r\n}\r\n\r\na.kx-header-link:hover {\r\n color: #FFCB05;\r\n text-decoration: none;\r\n}\r\n\r\n.kx-secondary-foreground {\r\n color: #FFFFFF;\r\n /*background-color: @@HeadBarBgColor@@;*/\r\n}\r\n\r\n.kx-login-button {\r\n background-color: #2D79D6;\r\n color: #FFFFFF;\r\n}\r\n\r\n/* General form button (yellow) */\r\n.button {\r\n font-size: 12px;\r\n font-weight: normal;\r\n color: #000000;\r\n background: url(''@@base_url@@/core/admin_templates/img/button_back.gif'') #f9eeae repeat-x;\r\n text-decoration: none;\r\n}\r\n\r\n/* Disabled (grayed-out) form button */\r\n.button-disabled {\r\n font-size: 12px;\r\n font-weight: normal;\r\n color: #676767;\r\n background: url(''@@base_url@@/core/admin_templates/img/button_back_disabled.gif'') #f9eeae repeat-x;\r\n text-decoration: none;\r\n}\r\n\r\n/* Tabs bar */\r\n\r\n.tab, .tab-active {\r\n background-color: #F0F1EB;\r\n padding: 3px 7px 2px 7px;\r\n border-top: 1px solid black;\r\n border-left: 1px solid black;\r\n border-right: 1px solid black;\r\n margin-left: 3px !important;\r\n white-space: nowrap;\r\n}\r\n\r\n.tab-active {\r\n background-color: #4487D9;\r\n}\r\n\r\n.tab a {\r\n color: #4487D9;\r\n font-weight: bold;\r\n}\r\n\r\n.tab-active a {\r\n color: #FFFFFF;\r\n font-weight: bold;\r\n}\r\n\r\na.scroll-left, a.scroll-right {\r\n cursor: pointer;\r\n display: block;\r\n float: left;\r\n height: 18px;\r\n margin: 0px 1px;\r\n width: 18px;\r\n}\r\n\r\na.scroll-left {\r\n background: transparent url(''@@base_url@@/core/admin_templates/img/tabs/left.png'') no-repeat scroll 0 0;\r\n}\r\n\r\na.scroll-right {\r\n background: transparent url(''@@base_url@@/core/admin_templates/img/tabs/right.png'') no-repeat scroll 0 0;\r\n}\r\n\r\na.disabled {\r\n visibility: hidden !important;\r\n}\r\n\r\na.scroll-left:hover, a.scroll-right:hover {\r\n background-position: 0 -18px;\r\n}\r\n\r\ntd.scroll-right-container {\r\n width: 20px;\r\n}\r\n\r\ntd.scroll-right-container.disabled, td.scroll-right-container.disabled * {\r\n width: 0px;\r\n margin: 0px;\r\n}\r\n\r\ntd.scroll-right-container.disabled br {\r\n display: none;\r\n}\r\n\r\n/* Toolbar */\r\n\r\n.toolbar {\r\n font-size: 8pt;\r\n border: 1px solid #000000;\r\n border-width: 0px 1px 1px 1px;\r\n background-color: @@ToolbarBgColor@@;\r\n border-collapse: collapse;\r\n}\r\n\r\n.toolbar td {\r\n height: 100%;\r\n}\r\n\r\n.toolbar-button, .toolbar-button-disabled, .toolbar-button-over {\r\n float: left;\r\n text-align: center;\r\n font-size: 8pt;\r\n padding: 5px 5px 5px 5px;\r\n vertical-align: middle;\r\n color: #006F99;\r\n}\r\n\r\n.toolbar-button-over {\r\n color: #000;\r\n}\r\n\r\n.toolbar-button-disabled {\r\n color: #444;\r\n}\r\n\r\n/* Scrollable Grids */\r\n\r\n\r\n.layout-only-table td {\r\n border: none !important;\r\n}\r\n\r\n/* Main Grid class */\r\n.grid-scrollable {\r\n padding: 0px;\r\n border: 1px solid black !important;\r\n border-top: none !important;\r\n}\r\n\r\n/* Div generated by js, which contains all the scrollable grid elements, affects the style of scrollable area without data (if there are too few rows) */\r\n.grid-container {\r\n background-color: #fff;\r\n}\r\n\r\n.grid-container table {\r\n border-collapse: collapse;\r\n}\r\n\r\n/* Inner div generated in each data-cell */\r\n.grid-cell-div {\r\n overflow: hidden;\r\n height: auto;\r\n}\r\n\r\n/* Main row definition */\r\n.grid-data-row td, .grid-data-row-selected td, .grid-data-row-even-selected td, .grid-data-row-mouseover td, .table-color1, .table-color2 {\r\n font-weight: normal;\r\n color: @@OddColor@@;\r\n background-color: @@OddBgColor@@;\r\n padding: 3px 5px 3px 5px;\r\n overflow: hidden;\r\n border-right: 1px solid #c9c9c9;\r\n}\r\n.grid-data-row-even td, .table-color2 {\r\n background-color: @@EvenBgColor@@;\r\n color: @@EvenColor@@;\r\n}\r\n.grid-data-row td a, .grid-data-row-selected td a, .grid-data-row-mouseover td a {\r\n text-decoration: underline;\r\n}\r\n\r\n/* mouse-over rows */\r\n.grid-data-row-mouseover td, table tr.grid-data-row[_row_highlighted] td {\r\n background: #FFFDF4;\r\n}\r\n\r\n/* Selected row, applies to both checkbox and data areas */\r\n.grid-data-row-selected td, table tr.grid-data-row[_row_selected] td {\r\n background: #FEF2D6;\r\n}\r\n\r\n.grid-data-row-even-selected td, .grid-data-row-even[_row_selected] td {\r\n background: #FFF7E0;\r\n}\r\n\r\n/* General header cell definition */\r\n.grid-header-row td {\r\n font-weight: bold;\r\n background-color: @@ColumnTitlesBgColor@@;\r\n text-decoration: none;\r\n padding: 3px 5px 3px 5px;\r\n color: @@ColumnTitlesColor@@;\r\n border-right: none;\r\n text-align: left;\r\n vertical-align: middle !important;\r\n white-space: nowrap;\r\n border-right: 1px solid #777;\r\n}\r\n\r\n/* Filters row */\r\ntr.grid-header-row-1 td {\r\n background-color: @@FiltersBgColor@@;\r\n border-bottom: 1px solid black;\r\n}\r\n\r\n/* Grid Filters */\r\ntable.range-filter {\r\n width: 100%;\r\n}\r\n\r\n.range-filter td {\r\n padding: 0px 0px 2px 2px !important;\r\n border: none !important;\r\n font-size: 8pt !important;\r\n font-weight: normal !important;\r\n text-align: left;\r\n color: #000000 !important;\r\n}\r\n\r\ninput.filter, select.filter, input.filter-active, select.filter-active {\r\n margin-bottom: 0px;\r\n border: 1px solid #aaa;\r\n}\r\n\r\ninput.filter-active {\r\n background-color: #FFFF00;\r\n}\r\n\r\nselect.filter-active {\r\n background-color: #FFFF00;\r\n}\r\n\r\n/* Column titles row */\r\ntr.grid-header-row-0 td {\r\n height: 25px;\r\n font-weight: bold;\r\n background-color: @@ColumnTitlesBgColor@@;\r\n color: @@ColumnTitlesColor@@;\r\n border-bottom: 1px solid black;\r\n}\r\n\r\ntr.grid-header-row-0 td a {\r\n color: @@ColumnTitlesColor@@;\r\n}\r\n\r\ntr.grid-header-row-0 td a:hover {\r\n color: #FFCC00;\r\n}\r\n\r\n\r\n.grid-footer-row td {\r\n background-color: #D7D7D7;\r\n font-weight: bold;\r\n border-right: 1px solid #C9C9C9;\r\n padding: 3px 5px 3px 5px;\r\n}\r\n\r\ntd.grid-header-last-cell, td.grid-data-last-cell, td.grid-footer-last-cell {\r\n border-right: none !important;\r\n}\r\n\r\ntd.grid-data-col-0, td.grid-data-col-0 div {\r\n text-align: center;\r\n vertical-align: middle !important;\r\n}\r\n\r\ntr.grid-header-row-1 td.grid-header-col-1 {\r\n text-align: center;\r\n vertical-align: middle !important;\r\n}\r\n\r\ntr.grid-header-row-1 td.grid-header-col-1 div {\r\n display: table-cell;\r\n vertical-align: middle;\r\n}\r\n\r\n.grid-status-bar {\r\n border: 1px solid black;\r\n border-top: none;\r\n padding: 0px;\r\n width: 100%;\r\n border-collapse: collapse;\r\n height: 30px;\r\n}\r\n\r\n.grid-status-bar td {\r\n background-color: @@TitleBarBgColor@@;\r\n color: @@TitleBarColor@@;\r\n font-size: 11pt;\r\n font-weight: normal;\r\n padding: 2px 8px 2px 8px;\r\n}\r\n\r\n/* /Scrollable Grids */\r\n\r\n\r\n/* Forms */\r\ntable.edit-form {\r\n border: none;\r\n border-top-width: 0px;\r\n border-collapse: collapse;\r\n width: 100%;\r\n}\r\n\r\n.edit-form-odd, .edit-form-even {\r\n padding: 0px;\r\n}\r\n\r\n.subsectiontitle {\r\n font-size: 10pt;\r\n font-weight: bold;\r\n background-color: #4A92CE;\r\n color: #fff;\r\n height: 25px;\r\n border-top: 1px solid black;\r\n vertical-align: middle;\r\n}\r\n\r\n.subsectiontitle td {\r\n vertical-align: middle;\r\n /*padding: 3px 5px 3px 5px;*/\r\n padding: 1px 5px;\r\n}\r\n\r\n.label-cell {\r\n background: #DEE7F6 url(''@@base_url@@/core/admin_templates/img/bgr_input_name_line.gif'') no-repeat right bottom;\r\n font: 12px arial, sans-serif;\r\n padding: 4px 20px;\r\n width: 160px;\r\n}\r\n\r\n.control-mid {\r\n width: 13px;\r\n border-left: 1px solid #7A95C2;\r\n background: #fff url(''@@base_url@@/core/admin_templates/img/bgr_mid.gif'') repeat-x left bottom;\r\n}\r\n\r\n.control-cell {\r\n font: 11px arial, sans-serif;\r\n padding: 4px 10px 5px 5px;\r\n background: #fff url(''@@base_url@@/core/admin_templates/img/bgr_input_line.gif'') no-repeat left bottom;\r\n width: auto;\r\n vertical-align: middle;\r\n}\r\n\r\n.label-cell-filler {\r\n background: #DEE7F6 none;\r\n}\r\n.control-mid-filler {\r\n background: #fff none;\r\n border-left: 1px solid #7A95C2;\r\n}\r\n.control-cell-filler {\r\n background: #fff none;\r\n}\r\n\r\n.error {\r\n color: red;\r\n}\r\n.error-cell {\r\n color: red;\r\n}\r\n\r\n.field-required {\r\n color: red;\r\n}\r\n\r\n.warning-table {\r\n background-color: #F0F1EB;\r\n border: 1px solid #000000;\r\n border-collapse: collapse;\r\n border-top-width: 0px;\r\n}\r\n\r\n.form-warning {\r\n color: red;\r\n font-size: 11px;\r\n}\r\n\r\n.priority {\r\n color: red;\r\n padding-left: 1px;\r\n padding-right: 1px;\r\n font-size: 11px;\r\n}\r\n\r\n.small-statistics {\r\n font-size: 11px;\r\n color: #707070;\r\n}\r\n\r\n.req-note {\r\n font-style: italic;\r\n color: #333;\r\n}\r\n\r\n#scroll_container table.tableborder {\r\n border-collapse: separate\r\n}\r\n\r\n\r\n/* Uploader */\r\n\r\n.uploader-main {\r\n position: absolute;\r\n display: none;\r\n z-index: 10;\r\n border: 1px solid #777;\r\n padding: 10px;\r\n width: 350px;\r\n height: 120px;\r\n overflow: hidden;\r\n background-color: #fff;\r\n}\r\n\r\n.uploader-percent {\r\n width: 100%;\r\n padding-top: 3px;\r\n text-align: center;\r\n position: relative;\r\n z-index: 20;\r\n float: left;\r\n font-weight: bold;\r\n}\r\n\r\n.uploader-left {\r\n width: 100%;\r\n border: 1px solid black;\r\n height: 20px;\r\n background: #fff url(''@@base_url@@/core/admin_templates/img/progress_left.gif'');\r\n}\r\n\r\n.uploader-done {\r\n width: 0%;\r\n background-color: green;\r\n height: 20px;\r\n background: #4A92CE url(''@@base_url@@/core/admin_templates/img/progress_done.gif'');\r\n}\r\n\r\n\r\n/* To be sorted */\r\nspan#category_path, span#category_path a {\r\n color: #FFFFFF;\r\n}\r\n\r\nspan#category_path a {\r\n text-decoration: underline;\r\n}\r\n\r\n/* Section title, right to the big icon */\r\n.admintitle {\r\n font-size: 16pt;\r\n font-weight: bold;\r\n color: @@SectionColor@@;\r\n text-decoration: none;\r\n}\r\n\r\n/* Left side of bluebar */\r\n.header_left_bg {\r\n background-color: @@TitleBarBgColor@@;\r\n background-image: none;\r\n padding-left: 5px;\r\n}\r\n\r\n/* Right side of bluebar */\r\n.tablenav, tablenav a {\r\n font-size: 11pt;\r\n font-weight: bold;\r\n color: @@TitleBarColor@@;\r\n\r\n text-decoration: none;\r\n background-color: @@TitleBarBgColor@@;\r\n background-image: none;\r\n}\r\n\r\n/* Section title in the bluebar * -- why ''link''? :S */\r\n.tablenav_link {\r\n font-size: 11pt;\r\n font-weight: bold;\r\n color: @@TitleBarColor@@;\r\n text-decoration: none;\r\n}\r\n\r\n/* Active page in top and bottom bluebars pagination */\r\n.current_page {\r\n font-size: 10pt;\r\n font-weight: bold;\r\n background-color: #fff;\r\n color: #2D79D6;\r\n padding: 3px 2px 3px 3px;\r\n}\r\n\r\n/* Other pages and arrows in pagination on blue */\r\n.nav_url {\r\n font-size: 10pt;\r\n font-weight: bold;\r\n color: #fff;\r\n padding: 3px 2px 3px 3px;\r\n}\r\n\r\n/* Tree */\r\n.tree-body {\r\n background-color: @@TreeBgColor@@;\r\n height: 100%\r\n}\r\n\r\n.tree_head.td, .tree_head, .tree_head:hover {\r\n font-weight: bold;\r\n font-size: 10px;\r\n color: #FFFFFF;\r\n font-family: Verdana, Arial;\r\n text-decoration: none;\r\n}\r\n\r\n.tree {\r\n padding: 0px;\r\n border: none;\r\n border-collapse: collapse;\r\n}\r\n\r\n.tree tr td {\r\n padding: 0px;\r\n margin: 0px;\r\n font-family: helvetica, arial, verdana,;\r\n font-size: 11px;\r\n white-space: nowrap;\r\n}\r\n\r\n.tree tr td a {\r\n font-size: 11px;\r\n color: @@TreeColor@@;\r\n font-family: Helvetica, Arial, Verdana;\r\n text-decoration: none;\r\n padding: 2px;\r\n}\r\n\r\n.tree tr td a:hover, .tree tr td a.debug-only-item:hover {\r\n color: @@TreeHoverColor@@;\r\n}\r\n\r\n.tree tr.highlighted td a, .tree tr.highlighted td a.debug-only-item {\r\n color: @@TreeHighColor@@;\r\n background-color: @@TreeHighBgColor@@;\r\n}\r\n\r\n.tree tr.highlighted td a:hover {\r\n color: @@TreeHighHoverColor@@;\r\n}\r\n\r\n.tree tr td a.debug-only-item {\r\n color: grey;\r\n}\r\n\r\n/* Ajax Dropdown */\r\n.suggest-box {\r\n border: 1px solid #999;\r\n background-color: #fff;\r\n}\r\n\r\n.suggest-item, .suggest-item-over {\r\n padding: 1px 2px 0px 2px;\r\n font-family: arial,verdana;\r\n font-size: 12px;\r\n}\r\n\r\n.suggest-item-over {\r\n background-color: #3366CC;\r\n color: #fff;\r\n}', 'in-portal_logo_img.jpg', 'in-portal_logo_img2.jpg', 'in-portal_logo_login.gif', 'a:22:{s:11:"HeadBgColor";a:2:{s:11:"Description";s:27:"Head frame background color";s:5:"Value";s:7:"#007BF4";}s:9:"HeadColor";a:2:{s:11:"Description";s:21:"Head frame text color";s:5:"Value";s:7:"#FFFFFF";}s:14:"SectionBgColor";a:2:{s:11:"Description";s:28:"Section bar background color";s:5:"Value";s:7:"#FFFFFF";}s:12:"SectionColor";a:2:{s:11:"Description";s:22:"Section bar text color";s:5:"Value";s:7:"#2D79D6";}s:12:"HeadBarColor";a:1:{s:5:"Value";s:7:"#000000";}s:14:"HeadBarBgColor";a:1:{s:5:"Value";s:7:"#1961B8";}s:13:"TitleBarColor";a:1:{s:5:"Value";s:7:"#FFFFFF";}s:15:"TitleBarBgColor";a:1:{s:5:"Value";s:7:"#2D79D6";}s:14:"ToolbarBgColor";a:1:{s:5:"Value";s:7:"#F0F1EB";}s:14:"FiltersBgColor";a:1:{s:5:"Value";s:7:"#D7D7D7";}s:17:"ColumnTitlesColor";a:1:{s:5:"Value";s:7:"#FFFFFF";}s:19:"ColumnTitlesBgColor";a:1:{s:5:"Value";s:7:"#999999";}s:8:"OddColor";a:1:{s:5:"Value";s:7:"#000000";}s:10:"OddBgColor";a:1:{s:5:"Value";s:7:"#F6F6F6";}s:9:"EvenColor";a:1:{s:5:"Value";s:7:"#000000";}s:11:"EvenBgColor";a:1:{s:5:"Value";s:7:"#EBEBEB";}s:9:"TreeColor";a:1:{s:5:"Value";s:7:"#000000";}s:14:"TreeHoverColor";a:1:{s:5:"Value";s:7:"#009FF0";}s:13:"TreeHighColor";a:1:{s:5:"Value";s:7:"#FFFFFF";}s:18:"TreeHighHoverColor";a:1:{s:5:"Value";s:7:"#FFFFFF";}s:15:"TreeHighBgColor";a:1:{s:5:"Value";s:7:"#4A92CE";}s:11:"TreeBgColor";a:1:{s:5:"Value";s:7:"#DCECF6";}}', 1273946818, 1);
+INSERT INTO Skins VALUES(DEFAULT, 'Default', '/* General elements */\r\n\r\nhtml {\r\n height: 100%;\r\n}\r\n\r\nbody {\r\n font-family: verdana,arial,helvetica,sans-serif;\r\n color: #000000;\r\n overflow-x: auto; overflow-y: auto;\r\n margin: 0px 0px 0px 0px;\r\n text-decoration: none;\r\n}\r\n\r\nbody, td {\r\n /* fix for Firefox, when font-size was not inherited in table cells */\r\n font-size: 9pt;\r\n}\r\n\r\na {\r\n color: #006699;\r\n text-decoration: none;\r\n}\r\n\r\na:hover {\r\n color: #009ff0;\r\n text-decoration: none;\r\n}\r\n\r\nform {\r\n display: inline;\r\n}\r\n\r\nimg { border: 0px; }\r\n\r\nbody.height-100 {\r\n height: 100%;\r\n}\r\n\r\nbody.regular-body {\r\n margin: 0px 10px 5px 10px;\r\n color: #000000;\r\n background-color: @@SectionBgColor@@;\r\n}\r\n\r\nbody.edit-popup {\r\n margin: 0px 0px 0px 0px;\r\n}\r\n\r\ntable.collapsed {\r\n border-collapse: collapse;\r\n}\r\n\r\n.bordered, table.bordered, .bordered-no-bottom {\r\n border: 1px solid #000000;\r\n border-collapse: collapse;\r\n}\r\n\r\n.bordered-no-bottom {\r\n border-bottom: none;\r\n}\r\n\r\n.login-table td {\r\n padding: 1px;\r\n}\r\n\r\n.disabled {\r\n background-color: #ebebeb;\r\n}\r\n\r\n/* Head frame */\r\ntable.head-table {\r\n background: url(''@@base_url@@/core/admin_templates/img/top_frame/right_background.png'') top right @@HeadBgColor@@ no-repeat;\r\n}\r\n\r\n.head-table tr td, .head-table tr td a {\r\n color: @@HeadColor@@\r\n}\r\n\r\ndiv#extra_toolbar td.button-active {\r\n background: url(''@@base_url@@/core/admin_templates/img/top_frame/toolbar_button_background.gif'') bottom left repeat-x;\r\n height: 22px;\r\n}\r\n\r\ndiv#extra_toolbar td.button-active a {\r\n color: black;\r\n text-decoration: none;\r\n}\r\n\r\ntd.kx-block-header, .head-table tr td.kx-block-header{\r\n color: @@HeadBarColor@@;\r\n background: url(''@@base_url@@/core/admin_templates/img/top_frame/toolbar_background.gif'') repeat-x top left;\r\n /*background-color: @@HeadBarBgColor@@;*/\r\n padding-left: 7px;\r\n padding-right: 7px;\r\n}\r\n\r\na.kx-header-link {\r\n text-decoration: underline;\r\n font-weight: bold;\r\n color: #0080C8;\r\n}\r\n\r\na.kx-header-link:hover {\r\n color: #FFCB05;\r\n text-decoration: none;\r\n}\r\n\r\n.kx-secondary-foreground {\r\n color: #FFFFFF;\r\n /*background-color: @@HeadBarBgColor@@;*/\r\n}\r\n\r\n.kx-login-button {\r\n background-color: #2D79D6;\r\n color: #FFFFFF;\r\n}\r\n\r\n/* General form button (yellow) */\r\n.button {\r\n font-size: 12px;\r\n font-weight: normal;\r\n color: #000000;\r\n background: url(''@@base_url@@/core/admin_templates/img/button_back.gif'') #f9eeae repeat-x;\r\n text-decoration: none;\r\n}\r\n\r\n/* Disabled (grayed-out) form button */\r\n.button-disabled {\r\n font-size: 12px;\r\n font-weight: normal;\r\n color: #676767;\r\n background: url(''@@base_url@@/core/admin_templates/img/button_back_disabled.gif'') #f9eeae repeat-x;\r\n text-decoration: none;\r\n}\r\n\r\n/* Tabs bar */\r\n\r\n.tab, .tab-active {\r\n background-color: #F0F1EB;\r\n padding: 3px 7px 2px 7px;\r\n border-top: 1px solid black;\r\n border-left: 1px solid black;\r\n border-right: 1px solid black;\r\n margin-left: 3px !important;\r\n white-space: nowrap;\r\n}\r\n\r\n.tab-active {\r\n background-color: #4487D9;\r\n}\r\n\r\n.tab a {\r\n color: #4487D9;\r\n font-weight: bold;\r\n}\r\n\r\n.tab-active a {\r\n color: #FFFFFF;\r\n font-weight: bold;\r\n}\r\n\r\na.scroll-left, a.scroll-right {\r\n cursor: pointer;\r\n display: block;\r\n float: left;\r\n height: 18px;\r\n margin: 0px 1px;\r\n width: 18px;\r\n}\r\n\r\na.scroll-left {\r\n background: transparent url(''@@base_url@@/core/admin_templates/img/tabs/left.png'') no-repeat scroll 0 0;\r\n}\r\n\r\na.scroll-right {\r\n background: transparent url(''@@base_url@@/core/admin_templates/img/tabs/right.png'') no-repeat scroll 0 0;\r\n}\r\n\r\na.disabled {\r\n visibility: hidden !important;\r\n}\r\n\r\na.scroll-left:hover, a.scroll-right:hover {\r\n background-position: 0 -18px;\r\n}\r\n\r\ntd.scroll-right-container {\r\n width: 20px;\r\n}\r\n\r\ntd.scroll-right-container.disabled, td.scroll-right-container.disabled * {\r\n width: 0px;\r\n margin: 0px;\r\n}\r\n\r\ntd.scroll-right-container.disabled br {\r\n display: none;\r\n}\r\n\r\n/* Toolbar */\r\n\r\n.toolbar {\r\n font-size: 8pt;\r\n border: 1px solid #000000;\r\n border-width: 0px 1px 1px 1px;\r\n background-color: @@ToolbarBgColor@@;\r\n border-collapse: collapse;\r\n}\r\n\r\n.toolbar td {\r\n height: 100%;\r\n}\r\n\r\n.toolbar-button, .toolbar-button-disabled, .toolbar-button-over {\r\n float: left;\r\n text-align: center;\r\n font-size: 8pt;\r\n padding: 5px 5px 5px 5px;\r\n vertical-align: middle;\r\n color: #006F99;\r\n}\r\n\r\n.toolbar-button-over {\r\n color: #000;\r\n}\r\n\r\n.toolbar-button-disabled {\r\n color: #444;\r\n}\r\n\r\n/* Scrollable Grids */\r\n\r\n\r\n.layout-only-table td {\r\n border: none !important;\r\n}\r\n\r\n/* Main Grid class */\r\n.grid-scrollable {\r\n padding: 0px;\r\n border: 1px solid black !important;\r\n border-top: none !important;\r\n}\r\n\r\n/* Div generated by js, which contains all the scrollable grid elements, affects the style of scrollable area without data (if there are too few rows) */\r\n.grid-container {\r\n background-color: #fff;\r\n}\r\n\r\n.grid-container table {\r\n border-collapse: collapse;\r\n}\r\n\r\n/* Inner div generated in each data-cell */\r\n.grid-cell-div {\r\n overflow: hidden;\r\n height: auto;\r\n}\r\n\r\n/* Main row definition */\r\n.grid-data-row td, .grid-data-row-selected td, .grid-data-row-even-selected td, .grid-data-row-mouseover td, .table-color1, .table-color2 {\r\n font-weight: normal;\r\n color: @@OddColor@@;\r\n background-color: @@OddBgColor@@;\r\n padding: 3px 5px 3px 5px;\r\n overflow: hidden;\r\n border-right: 1px solid #c9c9c9;\r\n}\r\n.grid-data-row-even td, .table-color2 {\r\n background-color: @@EvenBgColor@@;\r\n color: @@EvenColor@@;\r\n}\r\n.grid-data-row td a, .grid-data-row-selected td a, .grid-data-row-mouseover td a {\r\n text-decoration: underline;\r\n}\r\n\r\n/* mouse-over rows */\r\n.grid-data-row-mouseover td, table tr.grid-data-row[_row_highlighted] td {\r\n background: #FFFDF4;\r\n}\r\n\r\n/* Selected row, applies to both checkbox and data areas */\r\n.grid-data-row-selected td, table tr.grid-data-row[_row_selected] td {\r\n background: #FEF2D6;\r\n}\r\n\r\n.grid-data-row-even-selected td, .grid-data-row-even[_row_selected] td {\r\n background: #FFF7E0;\r\n}\r\n\r\n/* General header cell definition */\r\n.grid-header-row td {\r\n font-weight: bold;\r\n background-color: @@ColumnTitlesBgColor@@;\r\n text-decoration: none;\r\n padding: 3px 5px 3px 5px;\r\n color: @@ColumnTitlesColor@@;\r\n border-right: none;\r\n text-align: left;\r\n vertical-align: middle !important;\r\n white-space: nowrap;\r\n border-right: 1px solid #777;\r\n}\r\n\r\n/* Filters row */\r\ntr.grid-header-row-1 td {\r\n background-color: @@FiltersBgColor@@;\r\n border-bottom: 1px solid black;\r\n}\r\n\r\n/* Grid Filters */\r\ntable.range-filter {\r\n width: 100%;\r\n}\r\n\r\n.range-filter td {\r\n padding: 0px 0px 2px 2px !important;\r\n border: none !important;\r\n font-size: 8pt !important;\r\n font-weight: normal !important;\r\n text-align: left;\r\n color: #000000 !important;\r\n}\r\n\r\ninput.filter, select.filter, input.filter-active, select.filter-active {\r\n margin-bottom: 0px;\r\n border: 1px solid #aaa;\r\n}\r\n\r\ninput.filter-active {\r\n background-color: #FFFF00;\r\n}\r\n\r\nselect.filter-active {\r\n background-color: #FFFF00;\r\n}\r\n\r\n/* Column titles row */\r\ntr.grid-header-row-0 td {\r\n height: 25px;\r\n font-weight: bold;\r\n background-color: @@ColumnTitlesBgColor@@;\r\n color: @@ColumnTitlesColor@@;\r\n border-bottom: 1px solid black;\r\n}\r\n\r\ntr.grid-header-row-0 td a {\r\n color: @@ColumnTitlesColor@@;\r\n}\r\n\r\ntr.grid-header-row-0 td a:hover {\r\n color: #FFCC00;\r\n}\r\n\r\n\r\n.grid-footer-row td {\r\n background-color: #D7D7D7;\r\n font-weight: bold;\r\n border-right: 1px solid #C9C9C9;\r\n padding: 3px 5px 3px 5px;\r\n}\r\n\r\ntd.grid-header-last-cell, td.grid-data-last-cell, td.grid-footer-last-cell {\r\n border-right: none !important;\r\n}\r\n\r\ntd.grid-data-col-0, td.grid-data-col-0 div {\r\n text-align: center;\r\n vertical-align: middle !important;\r\n}\r\n\r\ntr.grid-header-row-1 td.grid-header-col-1 {\r\n text-align: center;\r\n vertical-align: middle !important;\r\n}\r\n\r\ntr.grid-header-row-1 td.grid-header-col-1 div {\r\n display: table-cell;\r\n vertical-align: middle;\r\n}\r\n\r\n.grid-status-bar {\r\n border: 1px solid black;\r\n border-top: none;\r\n padding: 0px;\r\n width: 100%;\r\n border-collapse: collapse;\r\n height: 30px;\r\n}\r\n\r\n.grid-status-bar td {\r\n background-color: @@TitleBarBgColor@@;\r\n color: @@TitleBarColor@@;\r\n font-size: 11pt;\r\n font-weight: normal;\r\n padding: 2px 8px 2px 8px;\r\n}\r\n\r\n/* /Scrollable Grids */\r\n\r\n\r\n/* Forms */\r\ntable.edit-form {\r\n border: none;\r\n border-top-width: 0px;\r\n border-collapse: collapse;\r\n width: 100%;\r\n}\r\n\r\n.edit-form-odd, .edit-form-even {\r\n padding: 0px;\r\n}\r\n\r\n.subsectiontitle {\r\n font-size: 10pt;\r\n font-weight: bold;\r\n background-color: #4A92CE;\r\n color: #fff;\r\n height: 25px;\r\n border-top: 1px solid black;\r\n vertical-align: middle;\r\n}\r\n\r\n.subsectiontitle td {\r\n vertical-align: middle;\r\n /*padding: 3px 5px 3px 5px;*/\r\n padding: 1px 5px;\r\n}\r\n\r\n.label-cell {\r\n background: #DEE7F6 url(''@@base_url@@/core/admin_templates/img/bgr_input_name_line.gif'') no-repeat right bottom;\r\n font: 12px arial, sans-serif;\r\n padding: 4px 20px;\r\n width: 160px;\r\n}\r\n\r\n.control-mid {\r\n width: 13px;\r\n border-left: 1px solid #7A95C2;\r\n background: #fff url(''@@base_url@@/core/admin_templates/img/bgr_mid.gif'') repeat-x left bottom;\r\n}\r\n\r\n.control-cell {\r\n font: 11px arial, sans-serif;\r\n padding: 4px 10px 5px 5px;\r\n background: #fff url(''@@base_url@@/core/admin_templates/img/bgr_input_line.gif'') no-repeat left bottom;\r\n width: auto;\r\n vertical-align: middle;\r\n}\r\n\r\n.label-cell-filler {\r\n background: #DEE7F6 none;\r\n}\r\n.control-mid-filler {\r\n background: #fff none;\r\n border-left: 1px solid #7A95C2;\r\n}\r\n.control-cell-filler {\r\n background: #fff none;\r\n}\r\n\r\n.error {\r\n color: red;\r\n}\r\n.error-cell {\r\n color: red;\r\n}\r\n\r\n.field-required {\r\n color: red;\r\n}\r\n\r\n.warning-table {\r\n background-color: #F0F1EB;\r\n border: 1px solid #000000;\r\n border-collapse: collapse;\r\n border-top-width: 0px;\r\n}\r\n\r\n.form-warning {\r\n color: red;\r\n font-size: 11px;\r\n}\r\n\r\n.priority {\r\n color: red;\r\n padding-left: 1px;\r\n padding-right: 1px;\r\n font-size: 11px;\r\n}\r\n\r\n.small-statistics {\r\n font-size: 11px;\r\n color: #707070;\r\n}\r\n\r\n.req-note {\r\n font-style: italic;\r\n color: #333;\r\n}\r\n\r\n#scroll_container table.tableborder {\r\n border-collapse: separate\r\n}\r\n\r\n/* Uploader */\r\n.uploader-queue .progress-container {\r\n margin-right: 5px;\r\n margin-top: 2px;\r\n float: left;\r\n}\r\n\r\n.uploader-queue .progress-empty {\r\n width: 150px;\r\n height: 9px;\r\n border: 1px solid black;\r\n background: url(''@@base_url@@/core/admin_templates/img/progress_left.gif'') repeat-x;\r\n}\r\n\r\n.uploader-queue .progress-full {\r\n height: 9px;\r\n background: url(''@@base_url@@/core/admin_templates/img/progress_done.gif'');\r\n}\r\n\r\n.uploader-queue .thumbnail {\r\n margin-bottom: 2px;\r\n border: 1px solid black;\r\n background-color: grey;\r\n}\r\n\r\n/* To be sorted */\r\nspan#category_path, span#category_path a {\r\n color: #FFFFFF;\r\n}\r\n\r\nspan#category_path a {\r\n text-decoration: underline;\r\n}\r\n\r\n/* Section title, right to the big icon */\r\n.admintitle {\r\n font-size: 16pt;\r\n font-weight: bold;\r\n color: @@SectionColor@@;\r\n text-decoration: none;\r\n}\r\n\r\n/* Left side of bluebar */\r\n.header_left_bg {\r\n background-color: @@TitleBarBgColor@@;\r\n background-image: none;\r\n padding-left: 5px;\r\n}\r\n\r\n/* Right side of bluebar */\r\n.tablenav, tablenav a {\r\n font-size: 11pt;\r\n font-weight: bold;\r\n color: @@TitleBarColor@@;\r\n\r\n text-decoration: none;\r\n background-color: @@TitleBarBgColor@@;\r\n background-image: none;\r\n}\r\n\r\n/* Section title in the bluebar * -- why ''link''? :S */\r\n.tablenav_link {\r\n font-size: 11pt;\r\n font-weight: bold;\r\n color: @@TitleBarColor@@;\r\n text-decoration: none;\r\n}\r\n\r\n/* Active page in top and bottom bluebars pagination */\r\n.current_page {\r\n font-size: 10pt;\r\n font-weight: bold;\r\n background-color: #fff;\r\n color: #2D79D6;\r\n padding: 3px 2px 3px 3px;\r\n}\r\n\r\n/* Other pages and arrows in pagination on blue */\r\n.nav_url {\r\n font-size: 10pt;\r\n font-weight: bold;\r\n color: #fff;\r\n padding: 3px 2px 3px 3px;\r\n}\r\n\r\n/* Tree */\r\n.tree-body {\r\n background-color: @@TreeBgColor@@;\r\n height: 100%\r\n}\r\n\r\n.tree_head.td, .tree_head, .tree_head:hover {\r\n font-weight: bold;\r\n font-size: 10px;\r\n color: #FFFFFF;\r\n font-family: Verdana, Arial;\r\n text-decoration: none;\r\n}\r\n\r\n.tree {\r\n padding: 0px;\r\n border: none;\r\n border-collapse: collapse;\r\n}\r\n\r\n.tree tr td {\r\n padding: 0px;\r\n margin: 0px;\r\n font-family: helvetica, arial, verdana,;\r\n font-size: 11px;\r\n white-space: nowrap;\r\n}\r\n\r\n.tree tr td a {\r\n font-size: 11px;\r\n color: @@TreeColor@@;\r\n font-family: Helvetica, Arial, Verdana;\r\n text-decoration: none;\r\n padding: 2px;\r\n}\r\n\r\n.tree tr td a:hover, .tree tr td a.debug-only-item:hover {\r\n color: @@TreeHoverColor@@;\r\n}\r\n\r\n.tree tr.highlighted td a, .tree tr.highlighted td a.debug-only-item {\r\n color: @@TreeHighColor@@;\r\n background-color: @@TreeHighBgColor@@;\r\n}\r\n\r\n.tree tr.highlighted td a:hover {\r\n color: @@TreeHighHoverColor@@;\r\n}\r\n\r\n.tree tr td a.debug-only-item {\r\n color: grey;\r\n}\r\n\r\n/* Ajax Dropdown */\r\n.suggest-box {\r\n border: 1px solid #999;\r\n background-color: #fff;\r\n}\r\n\r\n.suggest-item, .suggest-item-over {\r\n padding: 1px 2px 0px 2px;\r\n font-family: arial,verdana;\r\n font-size: 12px;\r\n}\r\n\r\n.suggest-item-over {\r\n background-color: #3366CC;\r\n color: #fff;\r\n}', 'in-portal_logo_img.jpg', 'in-portal_logo_img2.jpg', 'in-portal_logo_login.gif', 'a:22:{s:11:"HeadBgColor";a:2:{s:11:"Description";s:27:"Head frame background color";s:5:"Value";s:7:"#007BF4";}s:9:"HeadColor";a:2:{s:11:"Description";s:21:"Head frame text color";s:5:"Value";s:7:"#FFFFFF";}s:14:"SectionBgColor";a:2:{s:11:"Description";s:28:"Section bar background color";s:5:"Value";s:7:"#FFFFFF";}s:12:"SectionColor";a:2:{s:11:"Description";s:22:"Section bar text color";s:5:"Value";s:7:"#2D79D6";}s:12:"HeadBarColor";a:1:{s:5:"Value";s:7:"#000000";}s:14:"HeadBarBgColor";a:1:{s:5:"Value";s:7:"#1961B8";}s:13:"TitleBarColor";a:1:{s:5:"Value";s:7:"#FFFFFF";}s:15:"TitleBarBgColor";a:1:{s:5:"Value";s:7:"#2D79D6";}s:14:"ToolbarBgColor";a:1:{s:5:"Value";s:7:"#F0F1EB";}s:14:"FiltersBgColor";a:1:{s:5:"Value";s:7:"#D7D7D7";}s:17:"ColumnTitlesColor";a:1:{s:5:"Value";s:7:"#FFFFFF";}s:19:"ColumnTitlesBgColor";a:1:{s:5:"Value";s:7:"#999999";}s:8:"OddColor";a:1:{s:5:"Value";s:7:"#000000";}s:10:"OddBgColor";a:1:{s:5:"Value";s:7:"#F6F6F6";}s:9:"EvenColor";a:1:{s:5:"Value";s:7:"#000000";}s:11:"EvenBgColor";a:1:{s:5:"Value";s:7:"#EBEBEB";}s:9:"TreeColor";a:1:{s:5:"Value";s:7:"#000000";}s:14:"TreeHoverColor";a:1:{s:5:"Value";s:7:"#009FF0";}s:13:"TreeHighColor";a:1:{s:5:"Value";s:7:"#FFFFFF";}s:18:"TreeHighHoverColor";a:1:{s:5:"Value";s:7:"#FFFFFF";}s:15:"TreeHighBgColor";a:1:{s:5:"Value";s:7:"#4A92CE";}s:11:"TreeBgColor";a:1:{s:5:"Value";s:7:"#DCECF6";}}', 1274990718, 1);
INSERT INTO LocalesList VALUES
(1, '0x0436', 'Afrikaans (South Africa)', 'af-ZA', 'Latn', '1252'),
Index: kernel/db/db_event_handler.php
===================================================================
--- kernel/db/db_event_handler.php (revision 13581)
+++ kernel/db/db_event_handler.php (working copy)
@@ -2700,14 +2700,24 @@
return ;
}
+ $object =& $event->getObject( Array ('skip_autoload' => true));
+ /* @var $object kDBItem */
+
+ $field = $this->Application->GetVar('field');
+ $options = $object->GetFieldOptions($field);
+
if ($this->Application->GetVar('tmp')) {
- $path = WRITEABLE . '/tmp/' . $this->Application->GetVar('id') . '_' . $this->Application->GetVar('file');
+ $path = WRITEABLE . '/tmp/' . $this->Application->GetVar('id') . '_' . $file;
}
else {
- $object =& $event->getObject(array('skip_autoload'=>true));
- $options = $object->GetFieldOptions($this->Application->GetVar('field'));
+ $upload_dir = $options['upload_dir'];
- $path = FULL_PATH.$options['upload_dir'].$file;
+ if (array_key_exists('include_path', $options) && $options['include_path']) {
+ // relative path is already included in field
+ $upload_dir = '';
+ }
+
+ $path = FULL_PATH . $upload_dir . $file;
}
$path = str_replace('/', DIRECTORY_SEPARATOR, $path);
@@ -2716,10 +2726,21 @@
exit;
}
+ if ($this->Application->GetVar('thumb')) {
+ $image_helper =& $this->Application->recallObject('ImageHelper');
+ /* @var $image_helper ImageHelper */
+
+ $path = $image_helper->ResizeImage($path, $options['thumb_format']);
+
+ $base_url = rtrim($this->Application->BaseURL(), '/');
+ $path = preg_replace('/^' . preg_quote($base_url, '/') . '(.*)/', FULL_PATH . '\\1', $path);
+ $path = str_replace('/', DIRECTORY_SEPARATOR, $path);
+ }
+
$type = mime_content_type($path);
- header('Content-Length: '.filesize($path));
- header('Content-Type: '.$type);
+ header('Content-Length: ' . filesize($path));
+ header('Content-Type: ' . $type);
safeDefine('DBG_SKIP_REPORTING',1);