1
0
mirror of http://git.whoc.org.uk/git/password-manager.git synced 2024-11-14 18:29:02 +01:00
Conflicts:
	frontend/delta/css/clipperz.css.map
This commit is contained in:
Giulio Cesare Solaroli 2015-11-26 17:09:55 +01:00
commit 748c654bf5
8 changed files with 70 additions and 56 deletions

View File

@ -228,7 +228,6 @@ refer to http://www.clipperz.com.
-ms-transform: rotate(0deg) translate(0, 0); -ms-transform: rotate(0deg) translate(0, 0);
-o-transform: rotate(0deg) translate(0, 0); -o-transform: rotate(0deg) translate(0, 0);
transform: rotate(0deg) translate(0, 0); } transform: rotate(0deg) translate(0, 0); }
100% { 100% {
-webkit-transform: rotate(359deg) translate(0, 0); -webkit-transform: rotate(359deg) translate(0, 0);
-moz-transform: rotate(359deg) translate(0, 0); -moz-transform: rotate(359deg) translate(0, 0);
@ -242,7 +241,6 @@ refer to http://www.clipperz.com.
-ms-transform: rotate(0deg) translate(0, 0); -ms-transform: rotate(0deg) translate(0, 0);
-o-transform: rotate(0deg) translate(0, 0); -o-transform: rotate(0deg) translate(0, 0);
transform: rotate(0deg) translate(0, 0); } transform: rotate(0deg) translate(0, 0); }
100% { 100% {
-webkit-transform: rotate(359deg) translate(0, 0); -webkit-transform: rotate(359deg) translate(0, 0);
-moz-transform: rotate(359deg) translate(0, 0); -moz-transform: rotate(359deg) translate(0, 0);
@ -256,7 +254,6 @@ refer to http://www.clipperz.com.
-ms-transform: rotate(0deg) translate(0, 0); -ms-transform: rotate(0deg) translate(0, 0);
-o-transform: rotate(0deg) translate(0, 0); -o-transform: rotate(0deg) translate(0, 0);
transform: rotate(0deg) translate(0, 0); } transform: rotate(0deg) translate(0, 0); }
100% { 100% {
-webkit-transform: rotate(359deg) translate(0, 0); -webkit-transform: rotate(359deg) translate(0, 0);
-moz-transform: rotate(359deg) translate(0, 0); -moz-transform: rotate(359deg) translate(0, 0);
@ -270,7 +267,6 @@ refer to http://www.clipperz.com.
-ms-transform: rotate(0deg) translate(0, 0); -ms-transform: rotate(0deg) translate(0, 0);
-o-transform: rotate(0deg) translate(0, 0); -o-transform: rotate(0deg) translate(0, 0);
transform: rotate(0deg) translate(0, 0); } transform: rotate(0deg) translate(0, 0); }
100% { 100% {
-webkit-transform: rotate(359deg) translate(0, 0); -webkit-transform: rotate(359deg) translate(0, 0);
-moz-transform: rotate(359deg) translate(0, 0); -moz-transform: rotate(359deg) translate(0, 0);
@ -589,73 +585,61 @@ div.overlay {
@-webkit-keyframes overlay-spin { @-webkit-keyframes overlay-spin {
from { from {
opacity: 1; } opacity: 1; }
to { to {
opacity: 0.25; } } opacity: 0.25; } }
@-moz-keyframes overlay-spin { @-moz-keyframes overlay-spin {
from { from {
opacity: 1; } opacity: 1; }
to { to {
opacity: 0.25; } } opacity: 0.25; } }
@-ms-keyframes overlay-spin { @-ms-keyframes overlay-spin {
from { from {
opacity: 1; } opacity: 1; }
to { to {
opacity: 0.25; } } opacity: 0.25; } }
@keyframes overlay-spin { @keyframes overlay-spin {
from { from {
opacity: 1; } opacity: 1; }
to { to {
opacity: 0.25; } } opacity: 0.25; } }
@-webkit-keyframes ios-overlay-show { @-webkit-keyframes ios-overlay-show {
0% { 0% {
opacity: 0; } opacity: 0; }
100% { 100% {
opacity: 1; } } opacity: 1; } }
@-moz-keyframes ios-overlay-show { @-moz-keyframes ios-overlay-show {
0% { 0% {
opacity: 0; } opacity: 0; }
100% { 100% {
opacity: 1; } } opacity: 1; } }
@-ms-keyframes ios-overlay-show { @-ms-keyframes ios-overlay-show {
0% { 0% {
opacity: 0; } opacity: 0; }
100% { 100% {
opacity: 1; } } opacity: 1; } }
@keyframes ios-overlay-show { @keyframes ios-overlay-show {
0% { 0% {
opacity: 0; } opacity: 0; }
100% { 100% {
opacity: 1; } } opacity: 1; } }
@-webkit-keyframes ios-overlay-hide { @-webkit-keyframes ios-overlay-hide {
0% { 0% {
opacity: 1; } opacity: 1; }
100% { 100% {
opacity: 0; } } opacity: 0; } }
@-moz-keyframes ios-overlay-hide { @-moz-keyframes ios-overlay-hide {
0% { 0% {
opacity: 1; } opacity: 1; }
100% { 100% {
opacity: 0; } } opacity: 0; } }
@-ms-keyframes ios-overlay-hide { @-ms-keyframes ios-overlay-hide {
0% { 0% {
opacity: 1; } opacity: 1; }
100% { 100% {
opacity: 0; } } opacity: 0; } }
@keyframes ios-overlay-hide { @keyframes ios-overlay-hide {
0% { 0% {
opacity: 1; } opacity: 1; }
100% { 100% {
opacity: 0; } } opacity: 0; } }
/* /*
@ -2780,13 +2764,13 @@ refer to http://www.clipperz.com.
#extraFeaturesPanel .extraFeatureIndex footer { #extraFeaturesPanel .extraFeatureIndex footer {
font-size: 8pt; font-size: 8pt;
padding: 5px 5px 5px 5px; padding: 5px 5px 5px 5px;
border-top: 1px solid #999999; } border-top: 1px solid #999; }
#extraFeaturesPanel .extraFeatureIndex footer span { #extraFeaturesPanel .extraFeatureIndex footer span {
color: #999999; } color: #999; }
#extraFeaturesPanel .extraFeatureIndex footer span:after { #extraFeaturesPanel .extraFeatureIndex footer span:after {
content: ":"; } content: ":"; }
#extraFeaturesPanel .extraFeatureIndex footer a { #extraFeaturesPanel .extraFeatureIndex footer a {
color: #999999; color: #999;
text-decoration: none; text-decoration: none;
padding-left: 5px; padding-left: 5px;
font-weight: bold; } font-weight: bold; }
@ -3628,7 +3612,7 @@ div.cardList ul {
padding-right: 0px; padding-right: 0px;
box-shadow: -4px 0px 3px -1px rgba(0, 0, 0, 0.2); } box-shadow: -4px 0px 3px -1px rgba(0, 0, 0, 0.2); }
div.cardList ul li.archived { div.cardList ul li.archived {
background-color: #eeeeee; background-color: #eee;
color: #999; } color: #999; }
div.cardList ul li .favicon { div.cardList ul li .favicon {
width: 48px; width: 48px;
@ -3728,7 +3712,7 @@ div.cardList.narrow {
content: ""; } content: ""; }
#cardDetailPage .view.archived, .cardDetail .view.archived { #cardDetailPage .view.archived, .cardDetail .view.archived {
background-color: #eeeeee; } background-color: #eee; }
#cardDetailPage .view .cardDetailToolbar, .cardDetail .view .cardDetailToolbar { #cardDetailPage .view .cardDetailToolbar, .cardDetail .view .cardDetailToolbar {
background-color: #1863a1; background-color: #1863a1;
color: white; } color: white; }
@ -3977,8 +3961,9 @@ div.cardList.narrow {
width: 100px; width: 100px;
text-align: right; } text-align: right; }
.cardAttachments .attachmentList li .status .waiting { .cardAttachments .attachmentList li .status .waiting {
white-space: pre;
font-size: 10pt; font-size: 10pt;
color: #aaa; } color: grey; }
.cardAttachments .attachmentList li .actions { .cardAttachments .attachmentList li .actions {
-moz-user-select: -moz-none; -moz-user-select: -moz-none;
-khtml-user-select: none; -khtml-user-select: none;
@ -4177,7 +4162,7 @@ div.cardList.narrow {
cursor: grab; cursor: grab;
cursor: -moz-grab; cursor: -moz-grab;
cursor: -webkit-grab; cursor: -webkit-grab;
background: repeating-linear-gradient(0deg, white, white 2px, #dddddd 2px, #dddddd 3px); background: repeating-linear-gradient(0deg, white, white 2px, #ddd 2px, #ddd 3px);
width: 28px; width: 28px;
height: 20px; height: 20px;
margin-left: 6px; margin-left: 6px;
@ -4424,7 +4409,7 @@ div.cardList.narrow {
min-width: 220px; min-width: 220px;
width: 80%; width: 80%;
max-width: 400px; max-width: 400px;
background-color: #333333; background-color: #333;
color: #fff; color: #fff;
-webkit-border-radius: 6px; -webkit-border-radius: 6px;
-moz-border-radius: 6px; -moz-border-radius: 6px;
@ -4439,7 +4424,7 @@ div.cardList.narrow {
margin-left: 0px; margin-left: 0px;
width: 0; width: 0;
height: 0; height: 0;
border-top: 5px solid #333333; border-top: 5px solid #333;
border-left: 5px solid transparent; border-left: 5px solid transparent;
border-right: 5px solid transparent; } border-right: 5px solid transparent; }
.passwordGenerator .passwordGeneratorBaloon form span { .passwordGenerator .passwordGeneratorBaloon form span {

File diff suppressed because one or more lines are too long

View File

@ -43,6 +43,8 @@ Clipperz.PM.UI.AttachmentController = function(someParameters) {
this.downloadMessageCallback = someParameters['downloadMessageCallback']; this.downloadMessageCallback = someParameters['downloadMessageCallback'];
this.reloadServerStatusCallback = someParameters['reloadServerStatusCallback']; this.reloadServerStatusCallback = someParameters['reloadServerStatusCallback'];
this.cryptoObject = window.crypto || window.msCrypto;
return this; return this;
} }
@ -345,7 +347,7 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
'status': 'ENCRYPTING', 'status': 'ENCRYPTING',
}); });
window.crypto.subtle.importKey( this.cryptoObject.subtle.importKey(
"raw", "raw",
aKey, //this is an example jwk key, "raw" would be an ArrayBuffer aKey, //this is an example jwk key, "raw" would be an ArrayBuffer
{ name: "AES-CBC" }, //this is the algorithm options { name: "AES-CBC" }, //this is the algorithm options
@ -358,7 +360,7 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
}, },
doEncrypt: function(aFileReference, anArrayBuffer, anIV, aWebcryptoKey) { doEncrypt: function(aFileReference, anArrayBuffer, anIV, aWebcryptoKey) {
window.crypto.subtle.encrypt( this.cryptoObject.subtle.encrypt(
{ {
name: "AES-CBC", name: "AES-CBC",
iv: anIV, iv: anIV,
@ -481,7 +483,7 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
'status': 'DECRYPTING', 'status': 'DECRYPTING',
}); });
window.crypto.subtle.importKey( this.cryptoObject.subtle.importKey(
"raw", "raw",
aKey, //this is an example jwk key, "raw" would be an ArrayBuffer aKey, //this is an example jwk key, "raw" would be an ArrayBuffer
{name: "AES-CBC"}, //this is the algorithm options {name: "AES-CBC"}, //this is the algorithm options
@ -493,7 +495,7 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
}, },
doDecrypt: function(aFileReference, anArrayBuffer, anIV, aWebcryptoKey) { doDecrypt: function(aFileReference, anArrayBuffer, anIV, aWebcryptoKey) {
window.crypto.subtle.decrypt( this.cryptoObject.subtle.decrypt(
{name: "AES-CBC", iv: anIV}, {name: "AES-CBC", iv: anIV},
aWebcryptoKey, aWebcryptoKey,
anArrayBuffer anArrayBuffer
@ -532,8 +534,9 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
* an exception is thrown also when the user manually cancels the file * an exception is thrown also when the user manually cancels the file
* processing. In this case the status remains 'CANCELED'. * processing. In this case the status remains 'CANCELED'.
*/ */
handleException: function(aFileReference, aMessage) { handleException: function(aFileReference, aMessage, anException) {
var queueElement = this.getQueueElement(aFileReference); var queueElement = this.getQueueElement(aFileReference);
var messageString = aMessage ? " (" + aMessage + ")" : "";
if (queueElement['status'] != 'CANCELED') { if (queueElement['status'] != 'CANCELED') {
this.updateFileInQueue(aFileReference, { this.updateFileInQueue(aFileReference, {
@ -542,7 +545,7 @@ MochiKit.Base.update(Clipperz.PM.UI.AttachmentController.prototype, {
} }
if (aMessage) { if (aMessage) {
console.log("AttachmentController: caught exception (" + aMessage + ")"); console.log("AttachmentController: caught exception" + messageString + ":", anException);
} }
}, },

View File

@ -690,8 +690,7 @@ console.log("DROP"); //, anEvent);
renderAttachmentProgress: function(aStatus, aServerStatus, aProgress) { renderAttachmentProgress: function(aStatus, aServerStatus, aProgress) {
var result; var result;
var broken = (! aServerStatus && (! aStatus || aStatus == 'CANCELED' || aStatus == 'FAILED' || aStatus == 'DONE')); var queueOperationsInProgress = (aStatus && aStatus != 'DONE' && aStatus != 'CANCELED' && aStatus != 'FAILED');
var queueOperationsInProgress = (aStatus != 'DONE' && aStatus != 'CANCELED' && aStatus != 'FAILED');
result = null; result = null;
if (aStatus == 'UPLOADING' || aStatus == 'DOWNLOADING') { if (aStatus == 'UPLOADING' || aStatus == 'DOWNLOADING') {
@ -699,7 +698,7 @@ console.log("DROP"); //, anEvent);
'progress': aProgress, 'progress': aProgress,
'border': 1 'border': 1
}); });
} else if (! broken && aServerStatus != 'AVAILABLE' && queueOperationsInProgress) { } else if (queueOperationsInProgress) {
result = Clipperz.PM.UI.Components.RadialProgressIndicator({ result = Clipperz.PM.UI.Components.RadialProgressIndicator({
'progress': 0, 'progress': 0,
'border': 1, 'border': 1,
@ -723,7 +722,7 @@ console.log("DROP"); //, anEvent);
} else if (status == 'UPLOADING' || status == 'DOWNLOADING') { } else if (status == 'UPLOADING' || status == 'DOWNLOADING') {
var actionSymbol = (status == 'UPLOADING') ? "\u2b06" : "\u2b07"; var actionSymbol = (status == 'UPLOADING') ? "\u2b06" : "\u2b07";
result = React.DOM.span({'className': 'progressStatus'}, actionSymbol + Math.floor(aProgress*100) + '%'); result = React.DOM.span({'className': 'progressStatus'}, actionSymbol + Math.floor(aProgress*100) + '%');
} else if (aServerStatus != 'AVAILABLE') { } else if (aServerStatus != 'AVAILABLE' && ! this.props['_isBrandNew']) {
switch(status) { switch(status) {
case 'CANCELED': case 'CANCELED':
result = React.DOM.span({'className': 'broken'}, "canceled"); result = React.DOM.span({'className': 'broken'}, "canceled");
@ -739,6 +738,8 @@ console.log("DROP"); //, anEvent);
} }
} else if (queueOperationsInProgress) { } else if (queueOperationsInProgress) {
result = React.DOM.span({'className': 'waiting'}, "\u2b07waiting"); result = React.DOM.span({'className': 'waiting'}, "\u2b07waiting");
} else if (this.props['_isBrandNew']) {
result = React.DOM.span({'className': 'waiting'}, "waiting save");
} }
return result; return result;
@ -762,9 +763,9 @@ console.log("DROP"); //, anEvent);
var queueInfo = this.props['attachmentQueueInfo'].elementFetchCallback(anAttachment._reference) || []; var queueInfo = this.props['attachmentQueueInfo'].elementFetchCallback(anAttachment._reference) || [];
var queueStatus = queueInfo['status']; var queueStatus = queueInfo['status'];
var serverStatus = this.props['attachmentServerStatus'][anAttachment._reference]; var serverStatus = this.props['attachmentServerStatus'][anAttachment._reference];
var broken = (! serverStatus && (! queueStatus || queueStatus == 'CANCELED' || queueStatus == 'FAILED' || queueStatus == 'DONE')); var queueOperationsInProgress = (queueStatus && queueStatus != 'DONE' && queueStatus != 'CANCELED' && queueStatus != 'FAILED');
// console.log(anAttachment['name'], queueStatus) var broken = (! serverStatus && ! queueOperationsInProgress && ! this.props['_isBrandNew']);
var status = this.renderAttachmentStatus(queueStatus, serverStatus, queueInfo['requestProgress']); var status = this.renderAttachmentStatus(queueStatus, serverStatus, queueInfo['requestProgress']);
var actions = this.renderAttachmentActions(queueStatus, serverStatus, anAttachment['_attachment']); var actions = this.renderAttachmentActions(queueStatus, serverStatus, anAttachment['_attachment']);

View File

@ -298,7 +298,7 @@ Clipperz.PM.UI.Components.Cards.ViewClass = React.createClass({
} else if (status == 'UPLOADING' || status == 'DOWNLOADING') { } else if (status == 'UPLOADING' || status == 'DOWNLOADING') {
var actionSymbol = (status == 'UPLOADING') ? "\u2b06" : "\u2b07"; var actionSymbol = (status == 'UPLOADING') ? "\u2b06" : "\u2b07";
result = React.DOM.span({'className': 'progressStatus'}, actionSymbol + Math.floor(aProgress*100) + '%'); result = React.DOM.span({'className': 'progressStatus'}, actionSymbol + Math.floor(aProgress*100) + '%');
} else if (aServerStatus != 'AVAILABLE') { } else if (aServerStatus != 'AVAILABLE' && ! this.props['_isBrandNew']) {
switch(status) { switch(status) {
case 'CANCELED': case 'CANCELED':
result = React.DOM.span({'className': 'broken'}, "canceled"); result = React.DOM.span({'className': 'broken'}, "canceled");
@ -314,11 +314,12 @@ Clipperz.PM.UI.Components.Cards.ViewClass = React.createClass({
} }
} else if (queueOperationsInProgress) { } else if (queueOperationsInProgress) {
result = React.DOM.span({'className': 'waiting'}, "\u2b07waiting"); result = React.DOM.span({'className': 'waiting'}, "\u2b07waiting");
} else if (this.props['_isBrandNew']) {
result = React.DOM.span({'className': 'waiting'}, "waiting save");
} }
return result; return result;
}, },
renderAttachmentActions: function(aStatus, aServerStatus, anAttachment) { renderAttachmentActions: function(aStatus, aServerStatus, anAttachment) {
var result; var result;
@ -349,7 +350,9 @@ Clipperz.PM.UI.Components.Cards.ViewClass = React.createClass({
var queueInfo = this.props['attachmentQueueInfo'].elementFetchCallback(anAttachment._reference) || []; var queueInfo = this.props['attachmentQueueInfo'].elementFetchCallback(anAttachment._reference) || [];
var queueStatus = queueInfo['status']; var queueStatus = queueInfo['status'];
var serverStatus = this.props['attachmentServerStatus'][anAttachment._reference]; var serverStatus = this.props['attachmentServerStatus'][anAttachment._reference];
var broken = (! serverStatus && (! queueStatus || queueStatus == 'CANCELED')); var queueOperationsInProgress = (queueStatus && queueStatus != 'DONE' && queueStatus != 'CANCELED' && queueStatus != 'FAILED');
var broken = (! serverStatus && ! queueOperationsInProgress && ! this.props['_isBrandNew']);
var status = this.renderAttachmentStatus(queueStatus, serverStatus, queueInfo['requestProgress']); var status = this.renderAttachmentStatus(queueStatus, serverStatus, queueInfo['requestProgress']);
var actions = this.renderAttachmentActions(queueStatus, serverStatus, anAttachment['_attachment']); var actions = this.renderAttachmentActions(queueStatus, serverStatus, anAttachment['_attachment']);
@ -420,6 +423,8 @@ Clipperz.PM.UI.Components.Cards.ViewClass = React.createClass({
render: function () { render: function () {
var result; var result;
console.log(this.props['_isBrandNew']);
if (this.props['loading'] == true) { if (this.props['loading'] == true) {
result = this.renderLoading(); result = this.renderLoading();
} else if (this.props['_reference']) { } else if (this.props['_reference']) {

View File

@ -43,8 +43,8 @@ Clipperz.PM.UI.Components.RadialProgressIndicatorClass = React.createClass({
var pi = Math.PI; var pi = Math.PI;
var radiantAngle = 2 * pi * aProgress; var radiantAngle = 2 * pi * aProgress;
var x = Math.sin( radiantAngle ) * aRadius; var x = Math.sin(radiantAngle) * aRadius;
var y = Math.cos( radiantAngle ) * - aRadius; var y = Math.cos(radiantAngle) * - aRadius;
var mid = (aProgress > 0.5) ? 1 : 0; var mid = (aProgress > 0.5) ? 1 : 0;
return 'M 0 0 ' + // Start from origin return 'M 0 0 ' + // Start from origin
@ -61,7 +61,7 @@ Clipperz.PM.UI.Components.RadialProgressIndicatorClass = React.createClass({
//========================================================================= //=========================================================================
getAdditionalClassesString(aList) { getAdditionalClassesString: function(aList) {
var result; var result;
aList = aList || []; aList = aList || [];

View File

@ -648,6 +648,8 @@ Clipperz.log("THE BROWSER IS OFFLINE");
deferredResult.setValue('_reference'); deferredResult.setValue('_reference');
deferredResult.addMethod(aRecord, 'isArchived'); deferredResult.addMethod(aRecord, 'isArchived');
deferredResult.setValue('_isArchived'); deferredResult.setValue('_isArchived');
deferredResult.addMethod(aRecord, 'isBrandNew');
deferredResult.setValue('_isBrandNew');
// deferredResult.addMethod(aRecord, 'hasPendingChanges'); // deferredResult.addMethod(aRecord, 'hasPendingChanges');
deferredResult.addMethod(this.user(), 'hasPendingChanges'); deferredResult.addMethod(this.user(), 'hasPendingChanges');
deferredResult.setValue('hasPendingChanges'); deferredResult.setValue('hasPendingChanges');
@ -1784,10 +1786,25 @@ Clipperz.log("THE BROWSER IS OFFLINE");
saveCardEdits_handler: function (aRecordReference) { saveCardEdits_handler: function (aRecordReference) {
var currentPage = this.pages()[this.currentPage()]; var currentPage = this.pages()[this.currentPage()];
var self = this; var self = this;
var record, wasBrandNew;
return Clipperz.Async.callbacks("MainController.saveCardEdits_handler", [ return Clipperz.Async.callbacks("MainController.saveCardEdits_handler", [
MochiKit.Base.method(currentPage, 'setProps', {'showGlobalMask':true}), MochiKit.Base.method(currentPage, 'setProps', {'showGlobalMask':true}),
MochiKit.Base.method(this.user(), 'getRecord', aRecordReference),
function(aRecord) { record = aRecord; wasBrandNew = aRecord.isBrandNew(); },
MochiKit.Base.method(this, 'saveChanges'), MochiKit.Base.method(this, 'saveChanges'),
// When new record has attachments, server status should be updated as soon as it is available
function() { return wasBrandNew; },
Clipperz.Async.deferredIf('WasBrandNew',[
function() { return record; },
MochiKit.Base.method(this, 'reloadAttachmentServerStatusCallback')
], [
// MochiKit.Async.succeed
]),
MochiKit.Base.method(currentPage, 'setProps', {'mode':'view', 'showGlobalMask':false}), MochiKit.Base.method(currentPage, 'setProps', {'mode':'view', 'showGlobalMask':false}),
MochiKit.Base.method(this, 'refreshUI', aRecordReference), MochiKit.Base.method(this, 'refreshUI', aRecordReference),
MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'enableLock'), MochiKit.Base.partial(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'enableLock'),
@ -2310,14 +2327,16 @@ Clipperz.log("THE BROWSER IS OFFLINE");
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
reloadAttachmentServerStatusCallback: function(aRecord) { reloadAttachmentServerStatusCallback: function(aRecord) {
return Clipperz.Async.callbacks("MainController.reloadAttachmentServerStatus_handler", [ if (! aRecord.isBrandNew()) {
MochiKit.Base.method(this.user(), 'getRecordDetail', aRecord), return Clipperz.Async.callbacks("MainController.reloadAttachmentServerStatus_handler", [
MochiKit.Base.bind(function () { MochiKit.Base.method(this.user(), 'getRecordDetail', aRecord),
if (this._selectedCardInfo && this._selectedCardInfo['reference']) { MochiKit.Base.bind(function () {
return this.refreshUI(this._selectedCardInfo['reference']); if (this._selectedCardInfo && this._selectedCardInfo['reference']) {
} this.refreshUI(this._selectedCardInfo['reference']);
}, this), }
], {trace:false}); }, this),
], {trace:false});
}
}, },
//============================================================================ //============================================================================

View File

@ -476,8 +476,9 @@ $cardViewBasePadding: 10px;
text-align: right; text-align: right;
.waiting { .waiting {
white-space: pre;
font-size: 10pt; font-size: 10pt;
color: #aaa; color: grey;
} }
} }