sunrise-core 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +2 -2
- data/app/controllers/manage/assets_controller.rb +2 -2
- data/app/views/layouts/manage.html.erb +4 -5
- data/app/views/manage/{assets/_picture.html.erb → fileupload/_asset.html.erb} +4 -3
- data/app/views/manage/fileupload/_container.html.erb +25 -0
- data/app/views/manage/fileupload/_tmpl.html.erb +14 -0
- data/app/views/manage/users/_form.html.erb +5 -1
- data/app/views/manage/users/_model_filter.html.erb +5 -3
- data/config/locales/manage/en.yml +5 -0
- data/config/locales/manage/ru.yml +5 -0
- data/config/locales/manage/uk.yml +5 -0
- data/lib/generators/sunrise/install_generator.rb +26 -6
- data/lib/generators/sunrise/templates/helpers/manage/assets_helper.rb +0 -14
- data/lib/generators/sunrise/templates/javascripts/manage-fileuploader.js +182 -0
- data/lib/generators/sunrise/templates/javascripts/manage.js +17 -13
- data/lib/generators/sunrise/templates/models/defaults/user.rb +1 -5
- data/lib/generators/sunrise/templates/stylesheets/manage/buttons.css +42 -0
- data/lib/generators/sunrise/templates/stylesheets/manage/main.css +11 -0
- data/lib/generators/sunrise/templates/stylesheets/smoothness/{jquery-ui-1.8.6.custom.css → jquery-ui-1.8.13.custom.css} +37 -31
- data/lib/sunrise/engine.rb +5 -0
- data/lib/sunrise/models/asset.rb +1 -1
- data/lib/sunrise/version.rb +1 -1
- data/lib/sunrise/views/form_builder.rb +53 -6
- metadata +56 -43
- data/app/views/manage/assets/_collection.html.erb +0 -32
- data/app/views/manage/assets/_swfscript.html.erb +0 -51
- data/lib/generators/sunrise/templates/javascripts/swfupload/fileprogress.js +0 -114
- data/lib/generators/sunrise/templates/javascripts/swfupload/handlers.js +0 -164
- data/lib/generators/sunrise/templates/javascripts/swfupload/swfupload.js +0 -1134
- data/lib/generators/sunrise/templates/javascripts/swfupload/swfupload.queue.js +0 -98
- data/lib/generators/sunrise/templates/javascripts/swfupload/swfupload.swf +0 -0
@@ -1,114 +0,0 @@
|
|
1
|
-
/* ******************************************
|
2
|
-
* FileProgress Object
|
3
|
-
* Control object for displaying file info
|
4
|
-
* ****************************************** */
|
5
|
-
|
6
|
-
function FileProgress(file, targetID) {
|
7
|
-
this.fileProgressID = "divFileProgress";
|
8
|
-
|
9
|
-
this.fileProgressWrapper = document.getElementById(this.fileProgressID);
|
10
|
-
if (!this.fileProgressWrapper) {
|
11
|
-
this.fileProgressWrapper = document.createElement("div");
|
12
|
-
this.fileProgressWrapper.className = "progress-container";
|
13
|
-
this.fileProgressWrapper.id = this.fileProgressID;
|
14
|
-
|
15
|
-
var progressStatus = document.createElement("div");
|
16
|
-
progressStatus.className = "status-message";
|
17
|
-
progressStatus.innerHTML = " ";
|
18
|
-
|
19
|
-
this.fileProgressElement = document.createElement("div");
|
20
|
-
this.fileProgressElement.className = "progress-bar";
|
21
|
-
|
22
|
-
var progressBar = document.createElement("div");
|
23
|
-
progressBar.className = "progress";
|
24
|
-
|
25
|
-
this.fileProgressElement.appendChild(progressBar);
|
26
|
-
|
27
|
-
this.fileProgressWrapper.appendChild(progressStatus);
|
28
|
-
this.fileProgressWrapper.appendChild(this.fileProgressElement);
|
29
|
-
|
30
|
-
document.getElementById(targetID).appendChild(this.fileProgressWrapper);
|
31
|
-
|
32
|
-
} else {
|
33
|
-
this.fileProgressElement = this.fileProgressWrapper.childNodes[1];
|
34
|
-
//this.fileProgressElement.childNodes[1].firstChild.nodeValue = file.name;
|
35
|
-
}
|
36
|
-
|
37
|
-
this.height = this.fileProgressWrapper.offsetHeight;
|
38
|
-
}
|
39
|
-
FileProgress.prototype.setProgress = function(percentage) {
|
40
|
-
var value = parseInt((400 * percentage / 100));
|
41
|
-
this.fileProgressElement.childNodes[0].style.width = value + "px";
|
42
|
-
};
|
43
|
-
FileProgress.prototype.setComplete = function() {
|
44
|
-
/*this.fileProgressElement.className = "progressContainer blue";
|
45
|
-
this.fileProgressElement.childNodes[3].className = "progressBarComplete";
|
46
|
-
this.fileProgressElement.childNodes[3].style.width = "";*/
|
47
|
-
|
48
|
-
};
|
49
|
-
FileProgress.prototype.setError = function() {
|
50
|
-
/*this.fileProgressElement.className = "progressContainer red";
|
51
|
-
this.fileProgressElement.childNodes[3].className = "progressBarError";
|
52
|
-
this.fileProgressElement.childNodes[3].style.width = "";*/
|
53
|
-
|
54
|
-
};
|
55
|
-
FileProgress.prototype.setCancelled = function() {
|
56
|
-
/*this.fileProgressElement.className = "progressContainer";
|
57
|
-
this.fileProgressElement.childNodes[3].className = "progressBarError";
|
58
|
-
this.fileProgressElement.childNodes[3].style.width = "";*/
|
59
|
-
|
60
|
-
};
|
61
|
-
FileProgress.prototype.setStatus = function(status) {
|
62
|
-
this.fileProgressWrapper.childNodes[0].innerHTML = status;
|
63
|
-
};
|
64
|
-
FileProgress.prototype.parseXML = function(xml){
|
65
|
-
var xmlDoc = null;
|
66
|
-
|
67
|
-
if (window.ActiveXObject)
|
68
|
-
{
|
69
|
-
xmlDoc = Ajax.getTransport();
|
70
|
-
xmlDoc.async = false;
|
71
|
-
xmlDoc.loadXML(xml);
|
72
|
-
}
|
73
|
-
else
|
74
|
-
{
|
75
|
-
var parser = new DOMParser();
|
76
|
-
xmlDoc = parser.parseFromString(xml,"text/xml");
|
77
|
-
}
|
78
|
-
|
79
|
-
return xmlDoc;
|
80
|
-
};
|
81
|
-
FileProgress.prototype.setThumbnail = function(serverData, collection_id) {
|
82
|
-
var xml = this.parseXML(serverData);
|
83
|
-
var thumbnail = xml.getElementsByTagName('asset');
|
84
|
-
var collection = document.getElementById(collection_id);
|
85
|
-
|
86
|
-
thumbnail = (thumbnail[0] == null ? xml : thumbnail[0])
|
87
|
-
|
88
|
-
if (thumbnail != null)
|
89
|
-
{
|
90
|
-
var id_node = thumbnail.getElementsByTagName('id')[0];
|
91
|
-
var filename_node = thumbnail.getElementsByTagName('filename')[0];
|
92
|
-
var styles_node = thumbnail.getElementsByTagName('styles')[0];
|
93
|
-
var thumb_node = styles_node ? styles_node.getElementsByTagName('thumb')[0] : thumbnail.getElementsByTagName('thumb')[0];
|
94
|
-
|
95
|
-
var id = id_node.childNodes[0].nodeValue;
|
96
|
-
var filename = filename_node.childNodes[0].nodeValue;
|
97
|
-
var thumb = thumb_node.childNodes[0].nodeValue;
|
98
|
-
|
99
|
-
var picture = { id: id, link_path: thumb, image_path: thumb, image_title: filename };
|
100
|
-
|
101
|
-
$("#asset_tmpl").tmpl(picture).appendTo( collection );
|
102
|
-
}
|
103
|
-
};
|
104
|
-
|
105
|
-
FileProgress.prototype.toggleCancel = function (show, swfuploadInstance) {
|
106
|
-
/*this.fileProgressElement.childNodes[0].style.visibility = show ? "visible" : "hidden";
|
107
|
-
if (swfuploadInstance) {
|
108
|
-
var fileID = this.fileProgressID;
|
109
|
-
this.fileProgressElement.childNodes[0].onclick = function () {
|
110
|
-
swfuploadInstance.cancelUpload(fileID);
|
111
|
-
return false;
|
112
|
-
};
|
113
|
-
}*/
|
114
|
-
};
|
@@ -1,164 +0,0 @@
|
|
1
|
-
function uploadStart(file) {
|
2
|
-
try {
|
3
|
-
var progress = new FileProgress(file, this.customSettings.progressTarget);
|
4
|
-
progress.setStatus("Загрузка...");
|
5
|
-
progress.setProgress(0);
|
6
|
-
progress.toggleCancel(true, this);
|
7
|
-
}
|
8
|
-
catch (ex) {}
|
9
|
-
|
10
|
-
return true;
|
11
|
-
}
|
12
|
-
|
13
|
-
function fileQueued(file) {
|
14
|
-
try {
|
15
|
-
var progress = new FileProgress(file, this.customSettings.progressTarget);
|
16
|
-
progress.setStatus("Подготовка...");
|
17
|
-
progress.setProgress(0);
|
18
|
-
progress.toggleCancel(true, this);
|
19
|
-
} catch (ex) {
|
20
|
-
this.debug(ex);
|
21
|
-
}
|
22
|
-
}
|
23
|
-
|
24
|
-
function fileQueueError(file, errorCode, message) {
|
25
|
-
try {
|
26
|
-
if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
|
27
|
-
alert("You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file.")));
|
28
|
-
return;
|
29
|
-
}
|
30
|
-
|
31
|
-
var progress = new FileProgress(file, this.customSettings.progressTarget);
|
32
|
-
progress.setError();
|
33
|
-
progress.toggleCancel(false);
|
34
|
-
|
35
|
-
switch (errorCode) {
|
36
|
-
case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
|
37
|
-
progress.setStatus("File is too big.");
|
38
|
-
this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
39
|
-
break;
|
40
|
-
case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
|
41
|
-
progress.setStatus("Cannot upload Zero Byte files.");
|
42
|
-
this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
43
|
-
break;
|
44
|
-
case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
|
45
|
-
progress.setStatus("Invalid File Type.");
|
46
|
-
this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
47
|
-
break;
|
48
|
-
default:
|
49
|
-
if (file !== null) {
|
50
|
-
progress.setStatus("Unhandled Error");
|
51
|
-
}
|
52
|
-
this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
|
53
|
-
break;
|
54
|
-
}
|
55
|
-
} catch (ex) {
|
56
|
-
this.debug(ex);
|
57
|
-
}
|
58
|
-
}
|
59
|
-
|
60
|
-
function fileDialogComplete(numFilesSelected, numFilesQueued) {
|
61
|
-
try {
|
62
|
-
if (numFilesSelected > 0) {
|
63
|
-
//document.getElementById(this.customSettings.cancelButtonId).disabled = false;
|
64
|
-
$(this.customSettings.progressTarget).show();
|
65
|
-
}
|
66
|
-
|
67
|
-
this.startUpload();
|
68
|
-
} catch (ex) {
|
69
|
-
this.debug(ex);
|
70
|
-
}
|
71
|
-
}
|
72
|
-
|
73
|
-
function uploadProgress(file, bytesLoaded) {
|
74
|
-
try {
|
75
|
-
var percent = Math.ceil((bytesLoaded / file.size) * 100);
|
76
|
-
|
77
|
-
var progress = new FileProgress(file, this.customSettings.progressTarget);
|
78
|
-
progress.setProgress(percent);
|
79
|
-
if (percent === 100) {
|
80
|
-
progress.setStatus("Создание thumbnail...");
|
81
|
-
progress.toggleCancel(false, this);
|
82
|
-
} else {
|
83
|
-
progress.setStatus("Загрузка...");
|
84
|
-
progress.toggleCancel(true, this);
|
85
|
-
}
|
86
|
-
} catch (ex) {
|
87
|
-
this.debug(ex);
|
88
|
-
}
|
89
|
-
}
|
90
|
-
|
91
|
-
function uploadSuccess(file, serverData) {
|
92
|
-
try {
|
93
|
-
var progress = new FileProgress(file, this.customSettings.progressTarget);
|
94
|
-
progress.setComplete();
|
95
|
-
progress.setStatus("Завершено.");
|
96
|
-
progress.toggleCancel(false);
|
97
|
-
|
98
|
-
progress.setThumbnail(serverData, this.customSettings.collectionTarget);
|
99
|
-
|
100
|
-
} catch (ex) {
|
101
|
-
this.debug(ex);
|
102
|
-
}
|
103
|
-
}
|
104
|
-
|
105
|
-
function uploadComplete(file) {
|
106
|
-
try {
|
107
|
-
/* I want the next upload to continue automatically so I'll call startUpload here */
|
108
|
-
if (this.getStats().files_queued > 0) {
|
109
|
-
//this.startUpload();
|
110
|
-
} else {
|
111
|
-
var progress = new FileProgress(file, this.customSettings.progressTarget);
|
112
|
-
progress.setComplete();
|
113
|
-
progress.setStatus("Все картинки успешно обработано.");
|
114
|
-
progress.toggleCancel(false);
|
115
|
-
}
|
116
|
-
} catch (ex) {
|
117
|
-
this.debug(ex);
|
118
|
-
}
|
119
|
-
}
|
120
|
-
|
121
|
-
function uploadError(file, errorCode, message) {
|
122
|
-
var progress;
|
123
|
-
try {
|
124
|
-
switch (errorCode) {
|
125
|
-
case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
|
126
|
-
try {
|
127
|
-
progress = new FileProgress(file, this.customSettings.progressTarget);
|
128
|
-
progress.setCancelled();
|
129
|
-
progress.setStatus("Отменено");
|
130
|
-
progress.toggleCancel(false);
|
131
|
-
}
|
132
|
-
catch (ex1) {
|
133
|
-
this.debug(ex1);
|
134
|
-
}
|
135
|
-
break;
|
136
|
-
case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
|
137
|
-
try {
|
138
|
-
progress = new FileProgress(file, this.customSettings.progressTarget);
|
139
|
-
progress.setCancelled();
|
140
|
-
progress.setStatus("Остановлено");
|
141
|
-
progress.toggleCancel(true);
|
142
|
-
}
|
143
|
-
catch (ex2) {
|
144
|
-
this.debug(ex2);
|
145
|
-
}
|
146
|
-
case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
|
147
|
-
break;
|
148
|
-
default:
|
149
|
-
alert(message);
|
150
|
-
break;
|
151
|
-
}
|
152
|
-
} catch (ex3) {
|
153
|
-
this.debug(ex3);
|
154
|
-
}
|
155
|
-
}
|
156
|
-
|
157
|
-
// This event comes from the Queue Plugin
|
158
|
-
function queueComplete(numFilesUploaded) {
|
159
|
-
var progress_bar = document.getElementById(this.customSettings.progressTarget);
|
160
|
-
progress_bar.style.display = 'none';
|
161
|
-
|
162
|
-
/*var status = document.getElementById("divStatus");
|
163
|
-
status.innerHTML = numFilesUploaded + " file" + (numFilesUploaded === 1 ? "" : "s") + " uploaded.";*/
|
164
|
-
}
|