mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-22 08:26:16 -04:00
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:
parent
c6cb253f76
commit
208c7a849c
7 changed files with 43 additions and 3 deletions
|
@ -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"
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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(){
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue