pad.html: UI telling the user that a contribution is required before importing

This commit is an integration to 24ee37a38f.
This commit is contained in:
John McLear 2020-04-14 11:00:47 +00:00 committed by muxator
parent c6cb253f76
commit 208c7a849c
7 changed files with 43 additions and 3 deletions

View file

@ -144,5 +144,6 @@
"pad.impexp.importfailed": "Import failed", "pad.impexp.importfailed": "Import failed",
"pad.impexp.copypaste": "Please copy paste", "pad.impexp.copypaste": "Please copy paste",
"pad.impexp.exportdisabled": "Exporting as {{type}} format is disabled. Please contact your system administrator for details.", "pad.impexp.exportdisabled": "Exporting as {{type}} format is disabled. Please contact your system administrator for details.",
"pad.impexp.maxFileSize": "File too big. Contact your site administrator to increase the allowed file size for import" "pad.impexp.maxFileSize": "File too big. Contact your site administrator to increase the allowed file size for import",
"pad.impexp.permission": "Import is disabled because you never contributed to this pad. Please contribute at least once before importing"
} }

View file

@ -939,6 +939,16 @@ async function handleClientReady(client, message)
}); });
})); }));
let thisUserHasEditedThisPad = false;
if (historicalAuthorData[statusObject.authorID]) {
/*
* This flag is set to true when a user contributes to a specific pad for
* the first time. It is used for deciding if importing to that pad is
* allowed or not.
*/
thisUserHasEditedThisPad = true;
}
// glue the clientVars together, send them and tell the other clients that a new one is there // glue the clientVars together, send them and tell the other clients that a new one is there
// Check that the client is still here. It might have disconnected between callbacks. // Check that the client is still here. It might have disconnected between callbacks.
@ -1118,7 +1128,8 @@ async function handleClientReady(client, message)
"scrollWhenCaretIsInTheLastLineOfViewport": settings.scrollWhenFocusLineIsOutOfViewport.scrollWhenCaretIsInTheLastLineOfViewport, "scrollWhenCaretIsInTheLastLineOfViewport": settings.scrollWhenFocusLineIsOutOfViewport.scrollWhenCaretIsInTheLastLineOfViewport,
"percentageToScrollWhenUserPressesArrowUp": settings.scrollWhenFocusLineIsOutOfViewport.percentageToScrollWhenUserPressesArrowUp, "percentageToScrollWhenUserPressesArrowUp": settings.scrollWhenFocusLineIsOutOfViewport.percentageToScrollWhenUserPressesArrowUp,
}, },
"initialChangesets": [] // FIXME: REMOVE THIS SHIT "initialChangesets": [], // FIXME: REMOVE THIS SHIT
"thisUserHasEditedThisPad": thisUserHasEditedThisPad,
} }
// Add a username to the clientVars if one avaiable // Add a username to the clientVars if one avaiable

View file

@ -71,3 +71,7 @@ input {
@media (max-width: 800px) { @media (max-width: 800px) {
.hide-for-mobile { display: none; } .hide-for-mobile { display: none; }
} }
#importmessagepermission {
display: none;
}

View file

@ -313,6 +313,16 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad)
} }
else if (msg.type == "ACCEPT_COMMIT") else if (msg.type == "ACCEPT_COMMIT")
{ {
/*
* this is the first time this user contributed to this pad. Let's record
* it, because it will be used for allowing import.
*
* TODO: here, we are changing this variable on the client side only. The
* server has all the informations to make the same deduction, and
* broadcast to the client.
*/
clientVars.thisUserHasEditedThisPad = true;
var newRev = msg.newRev; var newRev = msg.newRev;
if (msgQueue.length > 0) if (msgQueue.length > 0)
{ {

View file

@ -394,6 +394,17 @@ var padeditbar = (function()
toolbar.registerCommand("import_export", function () { toolbar.registerCommand("import_export", function () {
toolbar.toggleDropDown("import_export", function(){ toolbar.toggleDropDown("import_export", function(){
if (clientVars.thisUserHasEditedThisPad) {
// the user has edited this pad historically or in this session
$('#importform').show();
$('#importmessagepermission').hide();
} else {
// this is the first time this user visits this pad
$('#importform').hide();
$('#importmessagepermission').show();
}
// If Import file input exists then focus on it.. // If Import file input exists then focus on it..
if($('#importfileinput').length !== 0){ if($('#importfileinput').length !== 0){
setTimeout(function(){ setTimeout(function(){

View file

@ -113,6 +113,8 @@ var padimpexp = (function()
msg = html10n.get("pad.impexp.padHasData"); msg = html10n.get("pad.impexp.padHasData");
} else if(status === "maxFileSize"){ } else if(status === "maxFileSize"){
msg = html10n.get("pad.impexp.maxFileSize"); msg = html10n.get("pad.impexp.maxFileSize");
} else if(status === "permission"){
msg = html10n.get("pad.impexp.permission");
} }
function showError(fade) function showError(fade)

View file

@ -201,6 +201,7 @@
</span> </span>
</div> </div>
</form> </form>
<div id="importmessagepermission" data-l10n-id="pad.impexp.permission"></div>
<% e.end_block(); %> <% e.end_block(); %>
</div> </div>
<div id="exportColumn"> <div id="exportColumn">